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

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

Issue 2163753004: Rename CancellationFlag to AtomicFlag. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: self-review (remove unused includes) Created 4 years, 5 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/task_scheduler_impl.h" 5 #include "base/task_scheduler/task_scheduler_impl.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 12 matching lines...) Expand all
23 const WorkerPoolIndexForTraitsCallback& 23 const WorkerPoolIndexForTraitsCallback&
24 worker_pool_index_for_traits_callback) { 24 worker_pool_index_for_traits_callback) {
25 std::unique_ptr<TaskSchedulerImpl> scheduler( 25 std::unique_ptr<TaskSchedulerImpl> scheduler(
26 new TaskSchedulerImpl(worker_pool_index_for_traits_callback)); 26 new TaskSchedulerImpl(worker_pool_index_for_traits_callback));
27 scheduler->Initialize(worker_pools); 27 scheduler->Initialize(worker_pools);
28 return scheduler; 28 return scheduler;
29 } 29 }
30 30
31 TaskSchedulerImpl::~TaskSchedulerImpl() { 31 TaskSchedulerImpl::~TaskSchedulerImpl() {
32 #if DCHECK_IS_ON() 32 #if DCHECK_IS_ON()
33 DCHECK(join_for_testing_returned_.IsSignaled()); 33 DCHECK(join_for_testing_returned_.IsSet());
34 #endif 34 #endif
35 } 35 }
36 36
37 void TaskSchedulerImpl::PostTaskWithTraits( 37 void TaskSchedulerImpl::PostTaskWithTraits(
38 const tracked_objects::Location& from_here, 38 const tracked_objects::Location& from_here,
39 const TaskTraits& traits, 39 const TaskTraits& traits,
40 const Closure& task) { 40 const Closure& task) {
41 // Post |task| as part of a one-off single-task Sequence. 41 // Post |task| as part of a one-off single-task Sequence.
42 GetWorkerPoolForTraits(traits)->PostTaskWithSequence( 42 GetWorkerPoolForTraits(traits)->PostTaskWithSequence(
43 WrapUnique(new Task(from_here, task, traits, TimeDelta())), 43 WrapUnique(new Task(from_here, task, traits, TimeDelta())),
44 make_scoped_refptr(new Sequence), nullptr); 44 make_scoped_refptr(new Sequence), nullptr);
45 } 45 }
46 46
47 scoped_refptr<TaskRunner> TaskSchedulerImpl::CreateTaskRunnerWithTraits( 47 scoped_refptr<TaskRunner> TaskSchedulerImpl::CreateTaskRunnerWithTraits(
48 const TaskTraits& traits, 48 const TaskTraits& traits,
49 ExecutionMode execution_mode) { 49 ExecutionMode execution_mode) {
50 return GetWorkerPoolForTraits(traits)->CreateTaskRunnerWithTraits( 50 return GetWorkerPoolForTraits(traits)->CreateTaskRunnerWithTraits(
51 traits, execution_mode); 51 traits, execution_mode);
52 } 52 }
53 53
54 void TaskSchedulerImpl::Shutdown() { 54 void TaskSchedulerImpl::Shutdown() {
55 // TODO(fdoray): Increase the priority of BACKGROUND tasks blocking shutdown. 55 // TODO(fdoray): Increase the priority of BACKGROUND tasks blocking shutdown.
56 task_tracker_.Shutdown(); 56 task_tracker_.Shutdown();
57 } 57 }
58 58
59 void TaskSchedulerImpl::JoinForTesting() { 59 void TaskSchedulerImpl::JoinForTesting() {
60 #if DCHECK_IS_ON() 60 #if DCHECK_IS_ON()
61 DCHECK(!join_for_testing_returned_.IsSignaled()); 61 DCHECK(!join_for_testing_returned_.IsSet());
62 #endif 62 #endif
63 for (const auto& worker_pool : worker_pools_) 63 for (const auto& worker_pool : worker_pools_)
64 worker_pool->JoinForTesting(); 64 worker_pool->JoinForTesting();
65 service_thread_->JoinForTesting(); 65 service_thread_->JoinForTesting();
66 #if DCHECK_IS_ON() 66 #if DCHECK_IS_ON()
67 join_for_testing_returned_.Signal(); 67 join_for_testing_returned_.Set();
68 #endif 68 #endif
69 } 69 }
70 70
71 TaskSchedulerImpl::TaskSchedulerImpl(const WorkerPoolIndexForTraitsCallback& 71 TaskSchedulerImpl::TaskSchedulerImpl(const WorkerPoolIndexForTraitsCallback&
72 worker_pool_index_for_traits_callback) 72 worker_pool_index_for_traits_callback)
73 : delayed_task_manager_( 73 : delayed_task_manager_(
74 Bind(&TaskSchedulerImpl::OnDelayedRunTimeUpdated, Unretained(this))), 74 Bind(&TaskSchedulerImpl::OnDelayedRunTimeUpdated, Unretained(this))),
75 worker_pool_index_for_traits_callback_( 75 worker_pool_index_for_traits_callback_(
76 worker_pool_index_for_traits_callback) 76 worker_pool_index_for_traits_callback)
77 #if DCHECK_IS_ON()
78 ,
79 join_for_testing_returned_(WaitableEvent::ResetPolicy::MANUAL,
80 WaitableEvent::InitialState::NOT_SIGNALED)
81 #endif
82 { 77 {
83 DCHECK(!worker_pool_index_for_traits_callback_.is_null()); 78 DCHECK(!worker_pool_index_for_traits_callback_.is_null());
84 } 79 }
85 80
86 void TaskSchedulerImpl::Initialize( 81 void TaskSchedulerImpl::Initialize(
87 const std::vector<WorkerPoolCreationArgs>& worker_pools) { 82 const std::vector<WorkerPoolCreationArgs>& worker_pools) {
88 DCHECK(!worker_pools.empty()); 83 DCHECK(!worker_pools.empty());
89 84
90 const SchedulerWorkerPoolImpl::ReEnqueueSequenceCallback 85 const SchedulerWorkerPoolImpl::ReEnqueueSequenceCallback
91 re_enqueue_sequence_callback = 86 re_enqueue_sequence_callback =
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 GetWorkerPoolForTraits(traits)->ReEnqueueSequence(std::move(sequence), 124 GetWorkerPoolForTraits(traits)->ReEnqueueSequence(std::move(sequence),
130 sort_key); 125 sort_key);
131 } 126 }
132 127
133 void TaskSchedulerImpl::OnDelayedRunTimeUpdated() { 128 void TaskSchedulerImpl::OnDelayedRunTimeUpdated() {
134 service_thread_->WakeUp(); 129 service_thread_->WakeUp();
135 } 130 }
136 131
137 } // namespace internal 132 } // namespace internal
138 } // namespace base 133 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698