Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(324)

Unified Diff: base/task_scheduler/priority_queue.cc

Issue 1868673002: TaskScheduler: Add PriorityQueue::Transaction::PushNoWakeUp(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@tasktracker2
Patch Set: rebase Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/task_scheduler/priority_queue.h ('k') | base/task_scheduler/priority_queue_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/task_scheduler/priority_queue.cc
diff --git a/base/task_scheduler/priority_queue.cc b/base/task_scheduler/priority_queue.cc
index cea62a383f7b89baadeadca346b6c6f2ace4da98..55eaf74f0fec58f7232fe3be048d2be96fd0ab90 100644
--- a/base/task_scheduler/priority_queue.cc
+++ b/base/task_scheduler/priority_queue.cc
@@ -31,13 +31,12 @@ PriorityQueue::Transaction::Transaction(PriorityQueue* outer_queue)
PriorityQueue::Transaction::~Transaction() {
DCHECK(CalledOnValidThread());
- // Run the sequence insertion callback once for each Sequence that was
- // inserted in the PriorityQueue during the lifetime of this Transaction.
- // Perform this outside the scope of PriorityQueue's lock to avoid imposing an
- // unnecessary lock dependency on |sequence_inserted_callback_|'s destination.
+ // Run the wake up callback once for each call to Push(). Perform this outside
+ // the scope of PriorityQueue's lock to avoid imposing an unnecessary lock
+ // dependency on the callback's destination.
auto_lock_.reset();
- for (size_t i = 0; i < num_pushed_sequences_; ++i)
- outer_queue_->sequence_inserted_callback_.Run();
+ for (size_t i = 0; i < num_wake_ups_; ++i)
+ outer_queue_->wake_up_callback_.Run();
}
void PriorityQueue::Transaction::Push(
@@ -45,8 +44,17 @@ void PriorityQueue::Transaction::Push(
DCHECK(CalledOnValidThread());
DCHECK(!sequence_and_sort_key->is_null());
+ PushNoWakeUp(std::move(sequence_and_sort_key));
+
+ ++num_wake_ups_;
+}
+
+void PriorityQueue::Transaction::PushNoWakeUp(
+ std::unique_ptr<SequenceAndSortKey> sequence_and_sort_key) {
+ DCHECK(CalledOnValidThread());
+ DCHECK(!sequence_and_sort_key->is_null());
+
outer_queue_->container_.push(std::move(sequence_and_sort_key));
- ++num_pushed_sequences_;
}
const PriorityQueue::SequenceAndSortKey& PriorityQueue::Transaction::Peek()
@@ -67,16 +75,16 @@ void PriorityQueue::Transaction::Pop() {
outer_queue_->container_.pop();
}
-PriorityQueue::PriorityQueue(const Closure& sequence_inserted_callback)
- : sequence_inserted_callback_(sequence_inserted_callback) {
- DCHECK(!sequence_inserted_callback_.is_null());
+PriorityQueue::PriorityQueue(const Closure& wake_up_callback)
+ : wake_up_callback_(wake_up_callback) {
+ DCHECK(!wake_up_callback_.is_null());
}
-PriorityQueue::PriorityQueue(const Closure& sequence_inserted_callback,
+PriorityQueue::PriorityQueue(const Closure& wake_up_callback,
const PriorityQueue* predecessor_priority_queue)
: container_lock_(&predecessor_priority_queue->container_lock_),
- sequence_inserted_callback_(sequence_inserted_callback) {
- DCHECK(!sequence_inserted_callback_.is_null());
+ wake_up_callback_(wake_up_callback) {
+ DCHECK(!wake_up_callback_.is_null());
DCHECK(predecessor_priority_queue);
}
« no previous file with comments | « base/task_scheduler/priority_queue.h ('k') | base/task_scheduler/priority_queue_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698