Chromium Code Reviews| Index: base/task_scheduler/task_scheduler_impl.cc |
| diff --git a/base/task_scheduler/task_scheduler_impl.cc b/base/task_scheduler/task_scheduler_impl.cc |
| index af9639b28377a2b531cda549458931fc6de52654..e1718c8733548421d10cb9631284876358b478e0 100644 |
| --- a/base/task_scheduler/task_scheduler_impl.cc |
| +++ b/base/task_scheduler/task_scheduler_impl.cc |
| @@ -9,7 +9,6 @@ |
| #include "base/bind.h" |
| #include "base/bind_helpers.h" |
| #include "base/memory/ptr_util.h" |
| -#include "base/task_scheduler/scheduler_service_thread.h" |
| #include "base/task_scheduler/scheduler_worker_pool_params.h" |
| #include "base/task_scheduler/sequence_sort_key.h" |
| #include "base/task_scheduler/task.h" |
| @@ -42,7 +41,7 @@ void TaskSchedulerImpl::PostTaskWithTraits( |
| // Post |task| as part of a one-off single-task Sequence. |
| GetWorkerPoolForTraits(traits)->PostTaskWithSequence( |
| MakeUnique<Task>(from_here, task, traits, TimeDelta()), |
| - make_scoped_refptr(new Sequence), nullptr); |
| + make_scoped_refptr(new Sequence), nullptr, TimeDelta()); |
| } |
| scoped_refptr<TaskRunner> TaskSchedulerImpl::CreateTaskRunnerWithTraits( |
| @@ -65,9 +64,9 @@ void TaskSchedulerImpl::JoinForTesting() { |
| #if DCHECK_IS_ON() |
| DCHECK(!join_for_testing_returned_.IsSet()); |
| #endif |
| + service_thread_.Stop(); |
|
robliao
2016/10/12 20:55:45
What's the motivation for this move?
I would expec
fdoray
2016/10/13 13:51:29
I didn't like the fact that the service thread cou
|
| for (const auto& worker_pool : worker_pools_) |
| worker_pool->JoinForTesting(); |
| - service_thread_->JoinForTesting(); |
| #if DCHECK_IS_ON() |
| join_for_testing_returned_.Set(); |
| #endif |
| @@ -75,11 +74,9 @@ void TaskSchedulerImpl::JoinForTesting() { |
| TaskSchedulerImpl::TaskSchedulerImpl(const WorkerPoolIndexForTraitsCallback& |
| worker_pool_index_for_traits_callback) |
| - : delayed_task_manager_( |
| - Bind(&TaskSchedulerImpl::OnDelayedRunTimeUpdated, Unretained(this))), |
| + : service_thread_("TaskSchedulerServiceThread"), |
| worker_pool_index_for_traits_callback_( |
| - worker_pool_index_for_traits_callback) |
| -{ |
| + worker_pool_index_for_traits_callback) { |
| DCHECK(!worker_pool_index_for_traits_callback_.is_null()); |
| } |
| @@ -87,23 +84,32 @@ void TaskSchedulerImpl::Initialize( |
| const std::vector<SchedulerWorkerPoolParams>& worker_pool_params_vector) { |
| DCHECK(!worker_pool_params_vector.empty()); |
| + // Start the service thread. |
| + constexpr MessageLoop::Type kServiceThreadMessageLoopType = |
| +#if defined(OS_POSIX) |
| + MessageLoop::TYPE_IO; |
| +#else |
| + MessageLoop::TYPE_DEFAULT; |
| +#endif |
| + constexpr size_t kDefaultStackSize = 0; |
| + const bool service_thread_start_result = service_thread_.StartWithOptions( |
|
robliao
2016/10/12 20:55:45
Inline this call to the CHECK below.
fdoray
2016/10/13 13:51:29
Done.
|
| + Thread::Options(kServiceThreadMessageLoopType, kDefaultStackSize)); |
| + CHECK(service_thread_start_result); |
| + |
| const SchedulerWorkerPoolImpl::ReEnqueueSequenceCallback |
| re_enqueue_sequence_callback = |
| Bind(&TaskSchedulerImpl::ReEnqueueSequenceCallback, Unretained(this)); |
| + // Start worker pools. |
| for (const auto& worker_pool_params : worker_pool_params_vector) { |
| // Passing pointers to objects owned by |this| to |
| // SchedulerWorkerPoolImpl::Create() is safe because a TaskSchedulerImpl |
| // can't be deleted before all its worker pools have been joined. |
| worker_pools_.push_back(SchedulerWorkerPoolImpl::Create( |
| worker_pool_params, re_enqueue_sequence_callback, &task_tracker_, |
| - &delayed_task_manager_)); |
| + service_thread_.task_runner())); |
| CHECK(worker_pools_.back()); |
| } |
| - |
| - service_thread_ = SchedulerServiceThread::Create(&task_tracker_, |
| - &delayed_task_manager_); |
| - CHECK(service_thread_); |
| } |
| SchedulerWorkerPool* TaskSchedulerImpl::GetWorkerPoolForTraits( |
| @@ -129,9 +135,5 @@ void TaskSchedulerImpl::ReEnqueueSequenceCallback( |
| sort_key); |
| } |
| -void TaskSchedulerImpl::OnDelayedRunTimeUpdated() { |
| - service_thread_->WakeUp(); |
| -} |
| - |
| } // namespace internal |
| } // namespace base |