| Index: base/task_scheduler/scheduler_worker_pool_impl.h
|
| diff --git a/base/task_scheduler/scheduler_worker_pool_impl.h b/base/task_scheduler/scheduler_worker_pool_impl.h
|
| index a621f797a53473b2096170a07689e456d5c3f2de..b5aa894e38afdaafce3c2933d46d4bf97ab7a6e3 100644
|
| --- a/base/task_scheduler/scheduler_worker_pool_impl.h
|
| +++ b/base/task_scheduler/scheduler_worker_pool_impl.h
|
| @@ -114,6 +114,9 @@ class BASE_EXPORT SchedulerWorkerPoolImpl : public SchedulerWorkerPool {
|
| size_t max_threads,
|
| const ReEnqueueSequenceCallback& re_enqueue_sequence_callback);
|
|
|
| + // Wakes up |worker|.
|
| + void WakeUpWorker(SchedulerWorker* worker);
|
| +
|
| // Wakes up the last worker from this worker pool to go idle, if any.
|
| void WakeUpOneWorker();
|
|
|
| @@ -159,7 +162,11 @@ class BASE_EXPORT SchedulerWorkerPoolImpl : public SchedulerWorkerPool {
|
| // details in GetWork()).
|
| mutable SchedulerLock idle_workers_stack_lock_;
|
|
|
| - // Stack of idle workers.
|
| + // Stack of idle workers. Initially, all workers are on this stack. A worker
|
| + // is removed from the stack before its WakeUp() function is called and when
|
| + // it receives work from GetWork() (a worker calls GetWork() when its sleep
|
| + // timeout expires, even if its WakeUp() method hasn't been called). A worker
|
| + // is pushed on this stack when it receives nullptr from GetWork().
|
| SchedulerWorkerStack idle_workers_stack_;
|
|
|
| // Signaled when all workers become idle.
|
|
|