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

Side by Side Diff: base/task_scheduler/scheduler_worker_thread.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_worker_thread.h" 5 #include "base/task_scheduler/scheduler_worker_thread.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <utility> 9 #include <utility>
10 10
(...skipping 26 matching lines...) Expand all
37 DelayedTaskManager* delayed_task_manager) 37 DelayedTaskManager* delayed_task_manager)
38 : traits_(traits), 38 : traits_(traits),
39 executor_(executor), 39 executor_(executor),
40 task_tracker_(task_tracker), 40 task_tracker_(task_tracker),
41 delayed_task_manager_(delayed_task_manager) {} 41 delayed_task_manager_(delayed_task_manager) {}
42 42
43 // SingleThreadTaskRunner: 43 // SingleThreadTaskRunner:
44 bool PostDelayedTask(const tracked_objects::Location& from_here, 44 bool PostDelayedTask(const tracked_objects::Location& from_here,
45 const Closure& closure, 45 const Closure& closure,
46 TimeDelta delay) override { 46 TimeDelta delay) override {
47 std::unique_ptr<Task> task(
48 new Task(from_here, closure, traits_,
49 delay.is_zero() ? TimeTicks() : TimeTicks::Now() + delay));
50 task->single_thread_task_runner_ref = this;
51
47 // Post the task as part of |sequence_|. 52 // Post the task as part of |sequence_|.
48 return PostTaskToExecutor( 53 return PostTaskToExecutor(std::move(task), sequence_, executor_,
49 WrapUnique( 54 task_tracker_, delayed_task_manager_);
50 new Task(from_here, closure, traits_,
51 delay.is_zero() ? TimeTicks() : TimeTicks::Now() + delay)),
52 sequence_, executor_, task_tracker_, delayed_task_manager_);
53 } 55 }
54 56
55 bool PostNonNestableDelayedTask(const tracked_objects::Location& from_here, 57 bool PostNonNestableDelayedTask(const tracked_objects::Location& from_here,
56 const Closure& closure, 58 const Closure& closure,
57 base::TimeDelta delay) override { 59 base::TimeDelta delay) override {
58 // Tasks are never nested within the task scheduler. 60 // Tasks are never nested within the task scheduler.
59 return PostDelayedTask(from_here, closure, delay); 61 return PostDelayedTask(from_here, closure, delay);
60 } 62 }
61 63
62 bool RunsTasksOnCurrentThread() const override { 64 bool RunsTasksOnCurrentThread() const override {
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 } 206 }
205 } 207 }
206 208
207 bool SchedulerWorkerThread::ShouldExitForTesting() const { 209 bool SchedulerWorkerThread::ShouldExitForTesting() const {
208 AutoSchedulerLock auto_lock(should_exit_for_testing_lock_); 210 AutoSchedulerLock auto_lock(should_exit_for_testing_lock_);
209 return should_exit_for_testing_; 211 return should_exit_for_testing_;
210 } 212 }
211 213
212 } // namespace internal 214 } // namespace internal
213 } // namespace base 215 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698