| 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 0b8c2f9a4b7612c5bd25cd3fdc170f92e57f43c6..6286d5ef4f6f267a4fcfab471d5fbea8f07a9393 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,
|
| SchedulerThreadPool* 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;
|
| SchedulerThreadPool* thread_pool;
|
|
|
| // Ensures that tasks that have the same |delayed_run_time| are sorted
|
| @@ -52,6 +55,7 @@ DelayedTaskManager::~DelayedTaskManager() = default;
|
|
|
| void DelayedTaskManager::AddDelayedTask(std::unique_ptr<Task> task,
|
| scoped_refptr<Sequence> sequence,
|
| + SchedulerWorkerThread* worker_thread,
|
| SchedulerThreadPool* thread_pool) {
|
| DCHECK(task);
|
| DCHECK(sequence);
|
| @@ -66,8 +70,8 @@ void DelayedTaskManager::AddDelayedTask(std::unique_ptr<Task> task,
|
| 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() ||
|
| @@ -100,7 +104,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);
|
| }
|
| }
|
|
|
|
|