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

Unified Diff: base/task_scheduler/scheduler_thread_pool.cc

Issue 1806473002: TaskScheduler [9] Delayed Task Manager (Closed) Base URL: https://luckyluke-private.googlesource.com/src@s_5_worker_thread
Patch Set: CR danakj #29 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/scheduler_thread_pool.h ('k') | base/task_scheduler/scheduler_thread_pool_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/task_scheduler/scheduler_thread_pool.cc
diff --git a/base/task_scheduler/scheduler_thread_pool.cc b/base/task_scheduler/scheduler_thread_pool.cc
index b00990bb82945e8026f5cb5ad263462e39277863..b9ad01c8b4349fb2f405b57b40971acf10a64dd0 100644
--- a/base/task_scheduler/scheduler_thread_pool.cc
+++ b/base/task_scheduler/scheduler_thread_pool.cc
@@ -31,9 +31,13 @@ class SchedulerParallelTaskRunner : public TaskRunner {
// long as |executor| is alive.
// TODO(robliao): Find a concrete way to manage |executor|'s memory.
SchedulerParallelTaskRunner(const TaskTraits& traits,
+ SchedulerTaskExecutor* executor,
TaskTracker* task_tracker,
- SchedulerTaskExecutor* executor)
- : traits_(traits), task_tracker_(task_tracker), executor_(executor) {}
+ DelayedTaskManager* delayed_task_manager)
+ : traits_(traits),
+ executor_(executor),
+ task_tracker_(task_tracker),
+ delayed_task_manager_(delayed_task_manager) {}
// TaskRunner:
bool PostDelayedTask(const tracked_objects::Location& from_here,
@@ -44,7 +48,8 @@ class SchedulerParallelTaskRunner : public TaskRunner {
WrapUnique(
new Task(from_here, closure, traits_,
delay.is_zero() ? TimeTicks() : TimeTicks::Now() + delay)),
- make_scoped_refptr(new Sequence), executor_, task_tracker_);
+ make_scoped_refptr(new Sequence), executor_, task_tracker_,
+ delayed_task_manager_);
}
bool RunsTasksOnCurrentThread() const override {
@@ -55,8 +60,9 @@ class SchedulerParallelTaskRunner : public TaskRunner {
~SchedulerParallelTaskRunner() override = default;
const TaskTraits traits_;
- TaskTracker* const task_tracker_;
SchedulerTaskExecutor* const executor_;
+ TaskTracker* const task_tracker_;
+ DelayedTaskManager* const delayed_task_manager_;
DISALLOW_COPY_AND_ASSIGN(SchedulerParallelTaskRunner);
};
@@ -68,9 +74,13 @@ class SchedulerSequencedTaskRunner : public SequencedTaskRunner {
// long as |executor| is alive.
// TODO(robliao): Find a concrete way to manage |executor|'s memory.
SchedulerSequencedTaskRunner(const TaskTraits& traits,
+ SchedulerTaskExecutor* executor,
TaskTracker* task_tracker,
- SchedulerTaskExecutor* executor)
- : traits_(traits), task_tracker_(task_tracker), executor_(executor) {}
+ DelayedTaskManager* delayed_task_manager)
+ : traits_(traits),
+ executor_(executor),
+ task_tracker_(task_tracker),
+ delayed_task_manager_(delayed_task_manager) {}
// SequencedTaskRunner:
bool PostDelayedTask(const tracked_objects::Location& from_here,
@@ -81,7 +91,7 @@ class SchedulerSequencedTaskRunner : public SequencedTaskRunner {
WrapUnique(
new Task(from_here, closure, traits_,
delay.is_zero() ? TimeTicks() : TimeTicks::Now() + delay)),
- sequence_, executor_, task_tracker_);
+ sequence_, executor_, task_tracker_, delayed_task_manager_);
}
bool PostNonNestableDelayedTask(const tracked_objects::Location& from_here,
@@ -102,8 +112,9 @@ class SchedulerSequencedTaskRunner : public SequencedTaskRunner {
const scoped_refptr<Sequence> sequence_ = new Sequence;
const TaskTraits traits_;
- TaskTracker* const task_tracker_;
SchedulerTaskExecutor* const executor_;
+ TaskTracker* const task_tracker_;
+ DelayedTaskManager* const delayed_task_manager_;
DISALLOW_COPY_AND_ASSIGN(SchedulerSequencedTaskRunner);
};
@@ -141,9 +152,10 @@ std::unique_ptr<SchedulerThreadPool> SchedulerThreadPool::CreateThreadPool(
ThreadPriority thread_priority,
size_t max_threads,
const EnqueueSequenceCallback& enqueue_sequence_callback,
- TaskTracker* task_tracker) {
- std::unique_ptr<SchedulerThreadPool> thread_pool(
- new SchedulerThreadPool(enqueue_sequence_callback, task_tracker));
+ TaskTracker* task_tracker,
+ DelayedTaskManager* delayed_task_manager) {
+ std::unique_ptr<SchedulerThreadPool> thread_pool(new SchedulerThreadPool(
+ enqueue_sequence_callback, task_tracker, delayed_task_manager));
if (thread_pool->Initialize(thread_priority, max_threads))
return thread_pool;
return nullptr;
@@ -154,12 +166,12 @@ scoped_refptr<TaskRunner> SchedulerThreadPool::CreateTaskRunnerWithTraits(
ExecutionMode execution_mode) {
switch (execution_mode) {
case ExecutionMode::PARALLEL:
- return make_scoped_refptr(
- new SchedulerParallelTaskRunner(traits, task_tracker_, this));
+ return make_scoped_refptr(new SchedulerParallelTaskRunner(
+ traits, this, task_tracker_, delayed_task_manager_));
case ExecutionMode::SEQUENCED:
- return make_scoped_refptr(
- new SchedulerSequencedTaskRunner(traits, task_tracker_, this));
+ return make_scoped_refptr(new SchedulerSequencedTaskRunner(
+ traits, this, task_tracker_, delayed_task_manager_));
case ExecutionMode::SINGLE_THREADED:
// TODO(fdoray): Support SINGLE_THREADED TaskRunners.
@@ -268,7 +280,8 @@ void SchedulerThreadPool::SchedulerWorkerThreadDelegateImpl::EnqueueSequence(
SchedulerThreadPool::SchedulerThreadPool(
const EnqueueSequenceCallback& enqueue_sequence_callback,
- TaskTracker* task_tracker)
+ TaskTracker* task_tracker,
+ DelayedTaskManager* delayed_task_manager)
: idle_worker_threads_stack_lock_(shared_priority_queue_.container_lock()),
idle_worker_threads_stack_cv_for_testing_(
idle_worker_threads_stack_lock_.CreateConditionVariable()),
@@ -276,8 +289,10 @@ SchedulerThreadPool::SchedulerThreadPool(
worker_thread_delegate_(
new SchedulerWorkerThreadDelegateImpl(this,
enqueue_sequence_callback)),
- task_tracker_(task_tracker) {
+ task_tracker_(task_tracker),
+ delayed_task_manager_(delayed_task_manager) {
DCHECK(task_tracker_);
+ DCHECK(delayed_task_manager_);
}
bool SchedulerThreadPool::Initialize(ThreadPriority thread_priority,
« no previous file with comments | « base/task_scheduler/scheduler_thread_pool.h ('k') | base/task_scheduler/scheduler_thread_pool_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698