Index: base/task_scheduler/scheduler_worker_pool_impl.cc |
diff --git a/base/task_scheduler/scheduler_worker_pool_impl.cc b/base/task_scheduler/scheduler_worker_pool_impl.cc |
index dc040301ca31af4868522b3983b112f293e0d28e..ea39a6bf7e383685f2d78dcb29a7732e0de1d341 100644 |
--- a/base/task_scheduler/scheduler_worker_pool_impl.cc |
+++ b/base/task_scheduler/scheduler_worker_pool_impl.cc |
@@ -698,12 +698,15 @@ bool SchedulerWorkerPoolImpl::Initialize( |
DCHECK(workers_.empty()); |
for (size_t i = 0; i < max_threads; ++i) { |
+ // The SchedulerWorker on top of the idle stack is initially ALIVE. |
robliao
2016/10/12 20:22:17
Oops! Nice catch.
I would drive this home even mo
fdoray
2016/10/12 21:18:44
Done.
|
+ const SchedulerWorker::InitialState initial_state = |
+ (i == max_threads - 1) ? SchedulerWorker::InitialState::ALIVE |
+ : SchedulerWorker::InitialState::DETACHED; |
std::unique_ptr<SchedulerWorker> worker = SchedulerWorker::Create( |
priority_hint, MakeUnique<SchedulerWorkerDelegateImpl>( |
this, re_enqueue_sequence_callback, |
&shared_priority_queue_, static_cast<int>(i)), |
- task_tracker_, i == 0 ? SchedulerWorker::InitialState::ALIVE |
- : SchedulerWorker::InitialState::DETACHED); |
+ task_tracker_, initial_state); |
if (!worker) |
break; |
idle_workers_stack_.Push(worker.get()); |