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

Unified Diff: base/task_scheduler/scheduler_single_thread_task_runner_manager.h

Issue 2806413002: Separate the create and start phases in SchedulerSingleThreadTaskRunnerManager. (Closed)
Patch Set: self-review 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 side-by-side diff with in-line comments
Download patch
Index: base/task_scheduler/scheduler_single_thread_task_runner_manager.h
diff --git a/base/task_scheduler/scheduler_single_thread_task_runner_manager.h b/base/task_scheduler/scheduler_single_thread_task_runner_manager.h
index 24d1a9a010b35661ee8235666652b16c5d0312a1..a054b5239f2b3540a3242600b990f67d8d747e53 100644
--- a/base/task_scheduler/scheduler_single_thread_task_runner_manager.h
+++ b/base/task_scheduler/scheduler_single_thread_task_runner_manager.h
@@ -37,6 +37,9 @@ class SchedulerWorkerDelegate;
class BASE_EXPORT SchedulerSingleThreadTaskRunnerManager final {
gab 2017/04/10 18:04:56 This class is missing a meta-comment, please work
fdoray 2017/04/10 19:05:00 Done.
public:
+ // Create a SchedulerSingleThreadTaskRunnerManager. Tasks posted to
+ // SingleThreadTaskRunners obtained from this
+ // SchedulerSingleThreadTaskRunnerManager won't run until Start() is called.
SchedulerSingleThreadTaskRunnerManager(
const std::vector<SchedulerWorkerPoolParams>& worker_pool_params_vector,
const TaskScheduler::WorkerPoolIndexForTraitsCallback&
@@ -45,6 +48,10 @@ class BASE_EXPORT SchedulerSingleThreadTaskRunnerManager final {
DelayedTaskManager* delayed_task_manager);
~SchedulerSingleThreadTaskRunnerManager();
+ // Creates threads for existing SingleThreadTaskRunners and allows threads to
+ // be created when new SingleThreadTaskRunners are created in the future.
+ void Start();
+
scoped_refptr<SingleThreadTaskRunner> CreateSingleThreadTaskRunnerWithTraits(
const TaskTraits& traits);
@@ -79,11 +86,14 @@ class BASE_EXPORT SchedulerSingleThreadTaskRunnerManager final {
TaskTracker* const task_tracker_;
DelayedTaskManager* const delayed_task_manager_;
- // Synchronizes access to |workers_| and |worker_id_|.
- SchedulerLock workers_lock_;
+ // Synchronizes access to |workers_|, |next_worker_id_| and |started_|.
+ SchedulerLock lock_;
std::vector<scoped_refptr<SchedulerWorker>> workers_;
int next_worker_id_ = 0;
+ // Set to true when Start() is called.
+ bool started_ = false;
+
#if DCHECK_IS_ON()
subtle::Atomic32 workers_unregistered_during_join_ = 0;
#endif

Powered by Google App Engine
This is Rietveld 408576698