| Index: base/task_scheduler/scheduler_thread_pool_impl.h
|
| diff --git a/base/task_scheduler/scheduler_thread_pool.h b/base/task_scheduler/scheduler_thread_pool_impl.h
|
| similarity index 71%
|
| copy from base/task_scheduler/scheduler_thread_pool.h
|
| copy to base/task_scheduler/scheduler_thread_pool_impl.h
|
| index 7afdd990854e155e009fa6a50e9f330de49305b1..3ed91bd3df5fb129da2e985437fdc9b521497308 100644
|
| --- a/base/task_scheduler/scheduler_thread_pool.h
|
| +++ b/base/task_scheduler/scheduler_thread_pool_impl.h
|
| @@ -2,8 +2,8 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#ifndef BASE_TASK_SCHEDULER_SCHEDULER_THREAD_POOL_H_
|
| -#define BASE_TASK_SCHEDULER_SCHEDULER_THREAD_POOL_H_
|
| +#ifndef BASE_TASK_SCHEDULER_SCHEDULER_THREAD_POOL_IMPL_H_
|
| +#define BASE_TASK_SCHEDULER_SCHEDULER_THREAD_POOL_IMPL_H_
|
|
|
| #include <stddef.h>
|
|
|
| @@ -18,7 +18,7 @@
|
| #include "base/task_runner.h"
|
| #include "base/task_scheduler/priority_queue.h"
|
| #include "base/task_scheduler/scheduler_lock.h"
|
| -#include "base/task_scheduler/scheduler_task_executor.h"
|
| +#include "base/task_scheduler/scheduler_thread_pool.h"
|
| #include "base/task_scheduler/scheduler_worker_thread.h"
|
| #include "base/task_scheduler/scheduler_worker_thread_stack.h"
|
| #include "base/task_scheduler/sequence.h"
|
| @@ -34,43 +34,30 @@ struct SequenceSortKey;
|
| class TaskTracker;
|
|
|
| // A pool of threads that run Tasks. This class is thread-safe.
|
| -class BASE_EXPORT SchedulerThreadPool : public SchedulerTaskExecutor {
|
| +class BASE_EXPORT SchedulerThreadPoolImpl : public SchedulerThreadPool {
|
| public:
|
| // Callback invoked when a Sequence isn't empty after a worker thread pops a
|
| // Task from it.
|
| - using EnqueueSequenceCallback = Callback<void(scoped_refptr<Sequence>)>;
|
| + using ReEnqueueSequenceCallback = Callback<void(scoped_refptr<Sequence>)>;
|
|
|
| // Destroying a SchedulerThreadPool returned by CreateThreadPool() is not
|
| // allowed in production; it is always leaked. In tests, it can only be
|
| // destroyed after JoinForTesting() has returned.
|
| - ~SchedulerThreadPool() override;
|
| + ~SchedulerThreadPoolImpl() override;
|
|
|
| // Creates a SchedulerThreadPool with up to |max_threads| threads of priority
|
| - // |thread_priority|. |enqueue_sequence_callback| will be invoked after a
|
| + // |thread_priority|. |re_enqueue_sequence_callback| will be invoked after a
|
| // thread of this thread pool tries to run a Task. |task_tracker| is used to
|
| // handle shutdown behavior of Tasks. |delayed_task_manager| handles Tasks
|
| // posted with a delay. Returns nullptr on failure to create a thread pool
|
| // with at least one thread.
|
| - static std::unique_ptr<SchedulerThreadPool> CreateThreadPool(
|
| + static std::unique_ptr<SchedulerThreadPoolImpl> CreateThreadPool(
|
| ThreadPriority thread_priority,
|
| size_t max_threads,
|
| - const EnqueueSequenceCallback& enqueue_sequence_callback,
|
| + const ReEnqueueSequenceCallback& re_enqueue_sequence_callback,
|
| TaskTracker* task_tracker,
|
| DelayedTaskManager* delayed_task_manager);
|
|
|
| - // Returns a TaskRunner whose PostTask invocations will result in scheduling
|
| - // Tasks with |traits| and |execution_mode| in this thread pool.
|
| - scoped_refptr<TaskRunner> CreateTaskRunnerWithTraits(
|
| - const TaskTraits& traits,
|
| - ExecutionMode execution_mode);
|
| -
|
| - // Inserts |sequence| into this thread pool's shared priority queue with
|
| - // |sequence_sort_key|. Must only be called from a worker thread to put
|
| - // |sequence| back into a PriorityQueue after running a Task from it. The
|
| - // worker thread doesn't have to belong to this thread pool.
|
| - void EnqueueSequence(scoped_refptr<Sequence> sequence,
|
| - const SequenceSortKey& sequence_sort_key);
|
| -
|
| // Waits until all threads are idle.
|
| void WaitForAllWorkerThreadsIdleForTesting();
|
|
|
| @@ -78,16 +65,24 @@ class BASE_EXPORT SchedulerThreadPool : public SchedulerTaskExecutor {
|
| // allowed to complete their execution. This can only be called once.
|
| void JoinForTesting();
|
|
|
| - // SchedulerTaskExecutor:
|
| - void PostTaskWithSequence(std::unique_ptr<Task> task,
|
| + // SchedulerThreadPool:
|
| + scoped_refptr<TaskRunner> CreateTaskRunnerWithTraits(
|
| + const TaskTraits& traits,
|
| + ExecutionMode execution_mode) override;
|
| + void ReEnqueueSequence(scoped_refptr<Sequence> sequence,
|
| + const SequenceSortKey& sequence_sort_key) override;
|
| + bool PostTaskWithSequence(std::unique_ptr<Task> task,
|
| scoped_refptr<Sequence> sequence) override;
|
| + void PostTaskWithSequenceNow(std::unique_ptr<Task> task,
|
| + scoped_refptr<Sequence> sequence) override;
|
|
|
| private:
|
| class SchedulerWorkerThreadDelegateImpl;
|
|
|
| - SchedulerThreadPool(const EnqueueSequenceCallback& enqueue_sequence_callback,
|
| - TaskTracker* task_tracker,
|
| - DelayedTaskManager* delayed_task_manager);
|
| + SchedulerThreadPoolImpl(
|
| + const ReEnqueueSequenceCallback& re_enqueue_sequence_callback,
|
| + TaskTracker* task_tracker,
|
| + DelayedTaskManager* delayed_task_manager);
|
|
|
| bool Initialize(ThreadPriority thread_priority, size_t max_threads);
|
|
|
| @@ -126,10 +121,10 @@ class BASE_EXPORT SchedulerThreadPool : public SchedulerTaskExecutor {
|
| TaskTracker* const task_tracker_;
|
| DelayedTaskManager* const delayed_task_manager_;
|
|
|
| - DISALLOW_COPY_AND_ASSIGN(SchedulerThreadPool);
|
| + DISALLOW_COPY_AND_ASSIGN(SchedulerThreadPoolImpl);
|
| };
|
|
|
| } // namespace internal
|
| } // namespace base
|
|
|
| -#endif // BASE_TASK_SCHEDULER_SCHEDULER_THREAD_POOL_H_
|
| +#endif // BASE_TASK_SCHEDULER_SCHEDULER_THREAD_POOL_IMPL_H_
|
|
|