| Index: base/task_scheduler/delayed_task_manager.cc
|
| diff --git a/base/task_scheduler/delayed_task_manager.cc b/base/task_scheduler/delayed_task_manager.cc
|
| index f088623517a8bdf7b9932d3ff64b2e95f3adba9b..dbfa818b4e0dc804faf9dafabfcabc0942fd6d4d 100644
|
| --- a/base/task_scheduler/delayed_task_manager.cc
|
| +++ b/base/task_scheduler/delayed_task_manager.cc
|
| @@ -15,10 +15,12 @@ namespace internal {
|
| struct DelayedTaskManager::DelayedTask {
|
| DelayedTask(std::unique_ptr<Task> task,
|
| scoped_refptr<Sequence> sequence,
|
| + SchedulerWorkerThread* worker_thread,
|
| SchedulerThreadPoolInterface* thread_pool,
|
| uint64_t index)
|
| : task(std::move(task)),
|
| sequence(std::move(sequence)),
|
| + worker_thread(worker_thread),
|
| thread_pool(thread_pool),
|
| index(index) {}
|
|
|
| @@ -28,10 +30,11 @@ struct DelayedTaskManager::DelayedTask {
|
|
|
| DelayedTask& operator=(DelayedTask&& other) = default;
|
|
|
| - // |task| will be posted to |thread_pool| as part of |sequence| when it
|
| - // becomes ripe for execution.
|
| + // |task| will be posted to |thread_pool| with |sequence| and |worker_thread|
|
| + // when it becomes ripe for execution.
|
| std::unique_ptr<Task> task;
|
| scoped_refptr<Sequence> sequence;
|
| + SchedulerWorkerThread* worker_thread;
|
| SchedulerThreadPoolInterface* thread_pool;
|
|
|
| // Ensures that tasks that have the same |delayed_run_time| are sorted
|
| @@ -53,6 +56,7 @@ DelayedTaskManager::~DelayedTaskManager() = default;
|
| void DelayedTaskManager::AddDelayedTask(
|
| std::unique_ptr<Task> task,
|
| scoped_refptr<Sequence> sequence,
|
| + SchedulerWorkerThread* worker_thread,
|
| SchedulerThreadPoolInterface* thread_pool) {
|
| DCHECK(task);
|
| DCHECK(sequence);
|
| @@ -67,8 +71,8 @@ void DelayedTaskManager::AddDelayedTask(
|
| if (!delayed_tasks_.empty())
|
| current_delayed_run_time = delayed_tasks_.top().task->delayed_run_time;
|
|
|
| - delayed_tasks_.emplace(std::move(task), std::move(sequence), thread_pool,
|
| - ++delayed_task_index_);
|
| + delayed_tasks_.emplace(std::move(task), std::move(sequence), worker_thread,
|
| + thread_pool, ++delayed_task_index_);
|
| }
|
|
|
| if (current_delayed_run_time.is_null() ||
|
| @@ -101,7 +105,8 @@ void DelayedTaskManager::PostReadyTasks() {
|
| // Post delayed tasks that are ready for execution.
|
| for (auto& delayed_task : ready_tasks) {
|
| delayed_task.thread_pool->PostTaskWithSequenceNow(
|
| - std::move(delayed_task.task), std::move(delayed_task.sequence));
|
| + std::move(delayed_task.task), std::move(delayed_task.sequence),
|
| + delayed_task.worker_thread);
|
| }
|
| }
|
|
|
|
|