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

Unified Diff: base/task_scheduler/delayed_task_manager.cc

Issue 1876363004: TaskScheduler [11] Support ExecutionMode::SINGLE_THREADED. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@8_delayed
Patch Set: add #include <algorithm> 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/delayed_task_manager.h ('k') | base/task_scheduler/delayed_task_manager_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
}
}
« no previous file with comments | « base/task_scheduler/delayed_task_manager.h ('k') | base/task_scheduler/delayed_task_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698