| Index: base/task_scheduler/task_scheduler.h
|
| diff --git a/base/task_scheduler/task_scheduler.h b/base/task_scheduler/task_scheduler.h
|
| index 296e40bb8dffe3f8c35263b4f299130c9175b54a..da2cb79504e9c2472758abcfce4f5ddd51246686 100644
|
| --- a/base/task_scheduler/task_scheduler.h
|
| +++ b/base/task_scheduler/task_scheduler.h
|
| @@ -108,25 +108,36 @@ class BASE_EXPORT TaskScheduler {
|
| // new TaskScheduler.
|
|
|
| // Creates and sets a task scheduler with one worker pool that can have up to
|
| - // |max_threads| threads. CHECKs on failure.
|
| + // |max_threads| threads. CHECKs on failure. For tests, prefer
|
| + // base::test::ScopedTaskScheduler (ensures isolation).
|
| static void CreateAndSetSimpleTaskScheduler(int max_threads);
|
|
|
| // Creates and sets a task scheduler with custom worker pools. CHECKs on
|
| // failure. |worker_pool_params_vector| describes the worker pools to create.
|
| // |worker_pool_index_for_traits_callback| returns the index in |worker_pools|
|
| - // of the worker pool in which a task with given traits should run.
|
| + // of the worker pool in which a task with given traits should run. For tests,
|
| + // prefer base::test::ScopedTaskScheduler (ensures isolation).
|
| static void CreateAndSetDefaultTaskScheduler(
|
| const std::vector<SchedulerWorkerPoolParams>& worker_pool_params_vector,
|
| const WorkerPoolIndexForTraitsCallback&
|
| worker_pool_index_for_traits_callback);
|
|
|
| // Registers |task_scheduler| to handle tasks posted through the post_task.h
|
| - // API for this process.
|
| + // API for this process. For tests, prefer base::test::ScopedTaskScheduler
|
| + // (ensures isolation).
|
| static void SetInstance(std::unique_ptr<TaskScheduler> task_scheduler);
|
|
|
| - // Retrieve the TaskScheduler set via CreateAndSetDefaultTaskScheduler() or
|
| - // SetInstance(). This should be used very rarely; most users of TaskScheduler
|
| - // should use the post_task.h API.
|
| + // Retrieve the TaskScheduler set via SetInstance() or
|
| + // CreateAndSet(Simple|Default)TaskScheduler(). This should be used very
|
| + // rarely; most users of TaskScheduler should use the post_task.h API. In
|
| + // particular, refrain from doing
|
| + // if (!TaskScheduler::GetInstance()) {
|
| + // TaskScheduler::SetInstance(...);
|
| + // base::PostTask(...);
|
| + // }
|
| + // instead make sure to SetInstance() early in one determinstic place in the
|
| + // process' initialization phase.
|
| + // In doubt, consult with //base/task_scheduler/OWNERS.
|
| static TaskScheduler* GetInstance();
|
|
|
| private:
|
|
|