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

Unified Diff: base/task_scheduler/task_scheduler.h

Issue 2199943003: Add TaskScheduler::CreateAndSetDefaultTaskScheduler (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@public
Patch Set: Update Comments Created 4 years, 4 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 5f851b491cc7bf41434cd162134ca4828fa5ea2a..9ef39c69486be7967dc7c3ba1f2c432a031c5cc3 100644
--- a/base/task_scheduler/task_scheduler.h
+++ b/base/task_scheduler/task_scheduler.h
@@ -6,6 +6,7 @@
#define BASE_TASK_SCHEDULER_TASK_SCHEDULER_H_
#include <memory>
+#include <vector>
#include "base/base_export.h"
#include "base/callback_forward.h"
@@ -19,10 +20,18 @@ class Location;
namespace base {
+class SchedulerWorkerPoolParams;
+
// Interface for a task scheduler and static methods to manage the instance used
// by the post_task.h API.
class BASE_EXPORT TaskScheduler {
public:
+ // Returns the index of the worker pool in which a task with |traits| should
+ // run. This should be coded in a future-proof way: new traits should
+ // gracefully map to a default pool.
+ using WorkerPoolIndexForTraitsCallback =
+ Callback<size_t(const TaskTraits& traits)>;
+
virtual ~TaskScheduler() = default;
// Posts |task| with specific |traits|.
@@ -48,17 +57,30 @@ class BASE_EXPORT TaskScheduler {
// called once.
virtual void Shutdown() = 0;
+ // 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.
+
+ // Creates and sets a default task scheduler. 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.
+ 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. The registered TaskScheduler will only be deleted
- // when a new TaskScheduler is registered (i.e. otherwise leaked on shutdown).
- // This must not be called when TaskRunners created by the previous
- // TaskScheduler are still alive. This method is not thread-safe; proper
- // synchronization is required to use the post_task.h API after registering a
- // new TaskScheduler.
+ // API for this process.
static void SetInstance(std::unique_ptr<TaskScheduler> task_scheduler);
- // Retrieve the TaskScheduler set via SetInstance(). This should be used very
- // rarely; most users of TaskScheduler should use the post_task.h API.
+ // 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.
static TaskScheduler* GetInstance();
};
« 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