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

Unified Diff: base/task_scheduler/task_scheduler.h

Issue 2836033002: Add TaskScheduler::Create and TaskScheduler::CreateAndStartWithDefaultParams. (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
« no previous file with comments | « no previous file | base/task_scheduler/task_scheduler.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/task_scheduler/task_scheduler.h
diff --git a/base/task_scheduler/task_scheduler.h b/base/task_scheduler/task_scheduler.h
index 3d3d5eb08144459a9b5fbe593e57d9db1e0eb7fa..0bbfd5c3798d2b8df52694be6d8e1b8cb8b2a8cc 100644
--- a/base/task_scheduler/task_scheduler.h
+++ b/base/task_scheduler/task_scheduler.h
@@ -134,28 +134,45 @@ class BASE_EXPORT TaskScheduler {
// after this call.
virtual void JoinForTesting() = 0;
- // CreateAndSetSimpleTaskScheduler(), CreateAndSetDefaultTaskScheduler(), and
- // SetInstance() register a TaskScheduler to handle tasks posted through the
- // post_task.h API for this process. The registered TaskScheduler will only be
- // deleted when a new TaskScheduler is registered and is leaked on shutdown.
- // The methods must not be called when TaskRunners created by the previous
- // TaskScheduler are still alive. The methods are not thread-safe; proper
- // synchronization is required to use the post_task.h API after registering a
- // new TaskScheduler.
+// CreateAndStartWithDefaultParams(), Create(), and SetInstance() register a
+// TaskScheduler to handle tasks posted through the post_task.h API for this
+// process.
+//
+// Processes that need to initialize TaskScheduler with custom params or that
+// need to allow tasks to be posted before the TaskScheduler creates its
+// threads should use Create() followed by Start(). Other processes can use
+// CreateAndStartWithDefaultParams().
+//
+// A registered TaskScheduler is only deleted when a new TaskScheduler is
+// registered. The last registered TaskScheduler is leaked on shutdown. The
+// methods below must not be called when TaskRunners created by a previous
+// TaskScheduler are still alive. The methods are not thread-safe; proper
+// synchronization is required to use the post_task.h API after registering a
+// new TaskScheduler.
#if !defined(OS_NACL)
- // Creates and sets a task scheduler using default params. |name| is used to
+ // Creates and starts a task scheduler using default params. |name| is used to
// label threads and histograms. It should identify the component that calls
- // this. CHECKs on failure. For tests, prefer base::test::ScopedTaskScheduler
- // (ensures isolation).
+ // this. Start() is called by this method; it is invalid to call it again
+ // afterwards. CHECKs on failure. For tests, prefer
+ // base::test::ScopedTaskEnvironment (ensures isolation).
+ static void CreateAndStartWithDefaultParams(StringPiece name);
+
+ // Deprecated. Use CreateAndStartWithDefaultParams() instead.
+ // TODO(fdoray): Redirect callers to CreateAndStartWithDefaultParams().
static void CreateAndSetSimpleTaskScheduler(StringPiece name);
#endif // !defined(OS_NACL)
- // Creates and sets a task scheduler using custom params. |name| is used to
- // label threads and histograms. It should identify the component that creates
- // the TaskScheduler. |init_params| is used to initialize the worker pools.
- // CHECKs on failure. For tests, prefer base::test::ScopedTaskScheduler
+ // Creates a ready to start task scheduler. |name| is used to label threads
+ // and histograms. It should identify the component that creates the
+ // TaskScheduler. The task scheduler doesn't create threads until Start() is
+ // called. Tasks can be posted at any time but will not run until after
+ // Start() is called. For tests, prefer base::test::ScopedTaskEnvironment
// (ensures isolation).
+ static void Create(StringPiece name);
+
+ // Deprecated. Use Create() and Start() instead.
+ // TODO(fdoray): Redirect callers to Create() and Start().
static void CreateAndSetDefaultTaskScheduler(StringPiece name,
const InitParams& init_params);
« no previous file with comments | « no previous file | base/task_scheduler/task_scheduler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698