[Task] Add a second heap handle for delayed priority queue
Bug: 1127430
Change-Id: I96cb57dafc4378ac4bd4d4c7addcbf148e7fb83b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3846596
Commit-Queue: Abdias Dagbekpo <[email protected]>
Reviewed-by: Etienne Pierre-Doray <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1037927}
diff --git a/base/task/thread_pool/task_source.h b/base/task/thread_pool/task_source.h
index 7be8157..70f9b00 100644
--- a/base/task/thread_pool/task_source.h
+++ b/base/task/thread_pool/task_source.h
@@ -153,12 +153,21 @@
// TaskSource.
virtual TimeTicks GetDelayedSortKey() const = 0;
- // Support for IntrusiveHeap.
- void SetHeapHandle(const HeapHandle& handle);
- void ClearHeapHandle();
- HeapHandle GetHeapHandle() const { return heap_handle_; }
+ // Support for IntrusiveHeap in ThreadGroup::PriorityQueue.
+ void SetImmediateHeapHandle(const HeapHandle& handle);
+ void ClearImmediateHeapHandle();
+ HeapHandle GetImmediateHeapHandle() const {
+ return immediate_pq_heap_handle_;
+ }
- HeapHandle heap_handle() const { return heap_handle_; }
+ HeapHandle immediate_heap_handle() const { return immediate_pq_heap_handle_; }
+
+ // Support for IntrusiveHeap in ThreadGroup::DelayedPriorityQueue.
+ void SetDelayedHeapHandle(const HeapHandle& handle);
+ void ClearDelayedHeapHandle();
+ HeapHandle GetDelayedHeapHandle() const { return delayed_pq_heap_handle_; }
+
+ HeapHandle delayed_heap_handle() const { return delayed_pq_heap_handle_; }
// Returns the shutdown behavior of all Tasks in the TaskSource. Can be
// accessed without a Transaction because it is never mutated.
@@ -219,7 +228,11 @@
// The TaskSource's position in its current PriorityQueue. Access is protected
// by the PriorityQueue's lock.
- HeapHandle heap_handle_;
+ HeapHandle immediate_pq_heap_handle_;
+
+ // The TaskSource's position in its current DelayedPriorityQueue. Access is
+ // protected by the DelayedPriorityQueue's lock.
+ HeapHandle delayed_pq_heap_handle_;
// A pointer to the TaskRunner that posts to this TaskSource, if any. The
// derived class is responsible for calling AddRef() when a TaskSource from