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

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

Issue 2637843002: Migrate base::TaskRunner from Closure to OnceClosure (Closed)
Patch Set: rebase Created 3 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_pool_impl.h" 5 #include "base/task_scheduler/scheduler_worker_pool_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <utility> 10 #include <utility>
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 // long as |worker_pool| is alive. 51 // long as |worker_pool| is alive.
52 // TODO(robliao): Find a concrete way to manage |worker_pool|'s memory. 52 // TODO(robliao): Find a concrete way to manage |worker_pool|'s memory.
53 SchedulerParallelTaskRunner(const TaskTraits& traits, 53 SchedulerParallelTaskRunner(const TaskTraits& traits,
54 SchedulerWorkerPool* worker_pool) 54 SchedulerWorkerPool* worker_pool)
55 : traits_(traits), worker_pool_(worker_pool) { 55 : traits_(traits), worker_pool_(worker_pool) {
56 DCHECK(worker_pool_); 56 DCHECK(worker_pool_);
57 } 57 }
58 58
59 // TaskRunner: 59 // TaskRunner:
60 bool PostDelayedTask(const tracked_objects::Location& from_here, 60 bool PostDelayedTask(const tracked_objects::Location& from_here,
61 Closure closure, 61 OnceClosure closure,
62 TimeDelta delay) override { 62 TimeDelta delay) override {
63 // Post the task as part of a one-off single-task Sequence. 63 // Post the task as part of a one-off single-task Sequence.
64 return worker_pool_->PostTaskWithSequence( 64 return worker_pool_->PostTaskWithSequence(
65 MakeUnique<Task>(from_here, std::move(closure), traits_, delay), 65 MakeUnique<Task>(from_here, std::move(closure), traits_, delay),
66 make_scoped_refptr(new Sequence)); 66 make_scoped_refptr(new Sequence));
67 } 67 }
68 68
69 bool RunsTasksOnCurrentThread() const override { 69 bool RunsTasksOnCurrentThread() const override {
70 return tls_current_worker_pool.Get().Get() == worker_pool_; 70 return tls_current_worker_pool.Get().Get() == worker_pool_;
71 } 71 }
(...skipping 14 matching lines...) Expand all
86 // so long as |worker_pool| is alive. 86 // so long as |worker_pool| is alive.
87 // TODO(robliao): Find a concrete way to manage |worker_pool|'s memory. 87 // TODO(robliao): Find a concrete way to manage |worker_pool|'s memory.
88 SchedulerSequencedTaskRunner(const TaskTraits& traits, 88 SchedulerSequencedTaskRunner(const TaskTraits& traits,
89 SchedulerWorkerPool* worker_pool) 89 SchedulerWorkerPool* worker_pool)
90 : traits_(traits), worker_pool_(worker_pool) { 90 : traits_(traits), worker_pool_(worker_pool) {
91 DCHECK(worker_pool_); 91 DCHECK(worker_pool_);
92 } 92 }
93 93
94 // SequencedTaskRunner: 94 // SequencedTaskRunner:
95 bool PostDelayedTask(const tracked_objects::Location& from_here, 95 bool PostDelayedTask(const tracked_objects::Location& from_here,
96 Closure closure, 96 OnceClosure closure,
97 TimeDelta delay) override { 97 TimeDelta delay) override {
98 std::unique_ptr<Task> task( 98 std::unique_ptr<Task> task(
99 new Task(from_here, std::move(closure), traits_, delay)); 99 new Task(from_here, std::move(closure), traits_, delay));
100 task->sequenced_task_runner_ref = this; 100 task->sequenced_task_runner_ref = this;
101 101
102 // Post the task as part of |sequence_|. 102 // Post the task as part of |sequence_|.
103 return worker_pool_->PostTaskWithSequence(std::move(task), sequence_); 103 return worker_pool_->PostTaskWithSequence(std::move(task), sequence_);
104 } 104 }
105 105
106 bool PostNonNestableDelayedTask(const tracked_objects::Location& from_here, 106 bool PostNonNestableDelayedTask(const tracked_objects::Location& from_here,
107 Closure closure, 107 OnceClosure closure,
108 base::TimeDelta delay) override { 108 base::TimeDelta delay) override {
109 // Tasks are never nested within the task scheduler. 109 // Tasks are never nested within the task scheduler.
110 return PostDelayedTask(from_here, std::move(closure), delay); 110 return PostDelayedTask(from_here, std::move(closure), delay);
111 } 111 }
112 112
113 bool RunsTasksOnCurrentThread() const override { 113 bool RunsTasksOnCurrentThread() const override {
114 // TODO(fdoray): Rename TaskRunner::RunsTaskOnCurrentThread() to something 114 // TODO(fdoray): Rename TaskRunner::RunsTaskOnCurrentThread() to something
115 // that reflects this behavior more accurately. crbug.com/646905 115 // that reflects this behavior more accurately. crbug.com/646905
116 return sequence_->token() == SequenceToken::GetForCurrentThread(); 116 return sequence_->token() == SequenceToken::GetForCurrentThread();
117 } 117 }
(...skipping 469 matching lines...) Expand 10 before | Expand all | Expand 10 after
587 AutoSchedulerLock auto_lock(idle_workers_stack_lock_); 587 AutoSchedulerLock auto_lock(idle_workers_stack_lock_);
588 idle_workers_stack_.Remove(worker); 588 idle_workers_stack_.Remove(worker);
589 } 589 }
590 590
591 bool SchedulerWorkerPoolImpl::CanWorkerDetachForTesting() { 591 bool SchedulerWorkerPoolImpl::CanWorkerDetachForTesting() {
592 return !worker_detachment_disallowed_.IsSet(); 592 return !worker_detachment_disallowed_.IsSet();
593 } 593 }
594 594
595 } // namespace internal 595 } // namespace internal
596 } // namespace base 596 } // namespace base
OLDNEW
« no previous file with comments | « base/task_scheduler/scheduler_single_thread_task_runner_manager.cc ('k') | base/task_scheduler/task.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698