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

Side by Side Diff: base/task_scheduler/scheduler_thread_pool.cc

Issue 1911023002: TaskScheduler: Add TaskRunnerHandle support to TaskScheduler tasks (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@c1_1876363004_STTR
Patch Set: 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/task_scheduler/scheduler_thread_pool.h" 5 #include "base/task_scheduler/scheduler_thread_pool.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 DelayedTaskManager* delayed_task_manager) 79 DelayedTaskManager* delayed_task_manager)
80 : traits_(traits), 80 : traits_(traits),
81 executor_(executor), 81 executor_(executor),
82 task_tracker_(task_tracker), 82 task_tracker_(task_tracker),
83 delayed_task_manager_(delayed_task_manager) {} 83 delayed_task_manager_(delayed_task_manager) {}
84 84
85 // SequencedTaskRunner: 85 // SequencedTaskRunner:
86 bool PostDelayedTask(const tracked_objects::Location& from_here, 86 bool PostDelayedTask(const tracked_objects::Location& from_here,
87 const Closure& closure, 87 const Closure& closure,
88 TimeDelta delay) override { 88 TimeDelta delay) override {
89 std::unique_ptr<Task> task(
90 new Task(from_here, closure, traits_,
91 delay.is_zero() ? TimeTicks() : TimeTicks::Now() + delay));
92 task->sequenced_task_runner_ref = this;
93
89 // Post the task as part of |sequence|. 94 // Post the task as part of |sequence|.
90 return PostTaskToExecutor( 95 return PostTaskToExecutor(std::move(task), sequence_, executor_,
91 WrapUnique( 96 task_tracker_, delayed_task_manager_);
92 new Task(from_here, closure, traits_,
93 delay.is_zero() ? TimeTicks() : TimeTicks::Now() + delay)),
94 sequence_, executor_, task_tracker_, delayed_task_manager_);
95 } 97 }
96 98
97 bool PostNonNestableDelayedTask(const tracked_objects::Location& from_here, 99 bool PostNonNestableDelayedTask(const tracked_objects::Location& from_here,
98 const Closure& closure, 100 const Closure& closure,
99 base::TimeDelta delay) override { 101 base::TimeDelta delay) override {
100 // Tasks are never nested within the task scheduler. 102 // Tasks are never nested within the task scheduler.
101 return PostDelayedTask(from_here, closure, delay); 103 return PostDelayedTask(from_here, closure, delay);
102 } 104 }
103 105
104 bool RunsTasksOnCurrentThread() const override { 106 bool RunsTasksOnCurrentThread() const override {
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
344 if (idle_worker_threads_stack_.empty()) 346 if (idle_worker_threads_stack_.empty())
345 return nullptr; 347 return nullptr;
346 348
347 auto worker_thread = idle_worker_threads_stack_.top(); 349 auto worker_thread = idle_worker_threads_stack_.top();
348 idle_worker_threads_stack_.pop(); 350 idle_worker_threads_stack_.pop();
349 return worker_thread; 351 return worker_thread;
350 } 352 }
351 353
352 } // namespace internal 354 } // namespace internal
353 } // namespace base 355 } // namespace base
OLDNEW
« no previous file with comments | « no previous file | base/task_scheduler/scheduler_worker_thread.cc » ('j') | base/task_scheduler/task.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698