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

Side by Side Diff: base/task_scheduler/scheduler_single_thread_task_runner_manager.h

Issue 2698843006: Introduce SchedulerSingleThreadTaskRunnerManager (Closed)
Patch Set: Created 3 years, 10 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef BASE_TASK_SCHEDULER_SCHEDULER_SINGLE_THREAD_TASK_RUNNER_MANAGER_H_
6 #define BASE_TASK_SCHEDULER_SCHEDULER_SINGLE_THREAD_TASK_RUNNER_MANAGER_H_
7
8 #include <vector>
9
10 #include "base/base_export.h"
11 #include "base/macros.h"
12 #include "base/memory/ref_counted.h"
13 #include "base/synchronization/condition_variable.h"
14 #include "base/task_scheduler/scheduler_lock.h"
15 #include "base/task_scheduler/scheduler_worker_pool_params.h"
16 #include "base/task_scheduler/task_scheduler.h"
17
18 namespace base {
19
20 class TaskTraits;
21 class SingleThreadTaskRunner;
22
23 namespace internal {
24
25 class DelayedTaskManager;
26 class SchedulerWorker;
27 class TaskTracker;
28
29 class BASE_EXPORT SchedulerSingleThreadTaskRunnerManager final {
30 public:
31 SchedulerSingleThreadTaskRunnerManager(
32 const std::vector<SchedulerWorkerPoolParams>& worker_pool_params_vector,
33 const TaskScheduler::WorkerPoolIndexForTraitsCallback&
34 worker_pool_index_for_traits_callback,
35 TaskTracker* task_tracker,
36 DelayedTaskManager* delayed_task_manager);
37 ~SchedulerSingleThreadTaskRunnerManager();
38
39 scoped_refptr<SingleThreadTaskRunner> CreateSingleThreadTaskRunnerWithTraits(
40 const TaskTraits& traits);
41
42 void JoinForTesting();
43
44 private:
45 class SchedulerSingleThreadTaskRunner;
46 class SchedulerWorkerDelegate;
47
48 SchedulerWorker* CreateAndRegisterSchedulerWorker(
49 const SchedulerWorkerPoolParams& params);
50
51 void UnregisterSchedulerWorker(SchedulerWorker* worker);
52
53 const std::vector<SchedulerWorkerPoolParams> worker_pool_params_vector_;
54 const TaskScheduler::WorkerPoolIndexForTraitsCallback
55 worker_pool_index_for_traits_callback_;
56 TaskTracker* const task_tracker_;
57 DelayedTaskManager* const delayed_task_manager_;
58
59 // Synchornizes access to |workers_| and |worker_id_|.
gab 2017/02/21 21:39:50 "Synchronizes"
robliao 2017/02/22 01:04:18 Done.
60 SchedulerLock workers_lock_;
61 std::vector<scoped_refptr<SchedulerWorker>> workers_;
62 int next_worker_id_ = 0;
63
64 DISALLOW_COPY_AND_ASSIGN(SchedulerSingleThreadTaskRunnerManager);
65 };
66
67 } // namespace internal
68 } // namespace base
69
70 #endif // BASE_TASK_SCHEDULER_SCHEDULER_SINGLE_THREAD_TASK_RUNNER_MANAGER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698