| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/task_scheduler/scheduler_worker_pool_impl.h" | 5 #include "base/task_scheduler/scheduler_worker_pool_impl.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 342 DCHECK(task); | 342 DCHECK(task); |
| 343 DCHECK(sequence); | 343 DCHECK(sequence); |
| 344 DCHECK(!worker || ContainsWorker(workers_, worker)); | 344 DCHECK(!worker || ContainsWorker(workers_, worker)); |
| 345 | 345 |
| 346 if (!task_tracker_->WillPostTask(task.get())) | 346 if (!task_tracker_->WillPostTask(task.get())) |
| 347 return false; | 347 return false; |
| 348 | 348 |
| 349 if (task->delayed_run_time.is_null()) { | 349 if (task->delayed_run_time.is_null()) { |
| 350 PostTaskWithSequenceNow(std::move(task), std::move(sequence), worker); | 350 PostTaskWithSequenceNow(std::move(task), std::move(sequence), worker); |
| 351 } else { | 351 } else { |
| 352 delayed_task_manager_->AddDelayedTask(std::move(task), std::move(sequence), | 352 delayed_task_manager_->AddDelayedTask( |
| 353 worker, this); | 353 std::move(task), |
| 354 Bind( |
| 355 [](scoped_refptr<Sequence> sequence, SchedulerWorker* worker, |
| 356 SchedulerWorkerPool* worker_pool, std::unique_ptr<Task> task) { |
| 357 worker_pool->PostTaskWithSequenceNow(std::move(task), |
| 358 std::move(sequence), worker); |
| 359 }, |
| 360 std::move(sequence), Unretained(worker), Unretained(this))); |
| 354 } | 361 } |
| 355 | 362 |
| 356 return true; | 363 return true; |
| 357 } | 364 } |
| 358 | 365 |
| 359 void SchedulerWorkerPoolImpl::PostTaskWithSequenceNow( | 366 void SchedulerWorkerPoolImpl::PostTaskWithSequenceNow( |
| 360 std::unique_ptr<Task> task, | 367 std::unique_ptr<Task> task, |
| 361 scoped_refptr<Sequence> sequence, | 368 scoped_refptr<Sequence> sequence, |
| 362 SchedulerWorker* worker) { | 369 SchedulerWorker* worker) { |
| 363 DCHECK(task); | 370 DCHECK(task); |
| (...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 752 AutoSchedulerLock auto_lock(idle_workers_stack_lock_); | 759 AutoSchedulerLock auto_lock(idle_workers_stack_lock_); |
| 753 idle_workers_stack_.Remove(worker); | 760 idle_workers_stack_.Remove(worker); |
| 754 } | 761 } |
| 755 | 762 |
| 756 bool SchedulerWorkerPoolImpl::CanWorkerDetachForTesting() { | 763 bool SchedulerWorkerPoolImpl::CanWorkerDetachForTesting() { |
| 757 return !worker_detachment_disallowed_.IsSet(); | 764 return !worker_detachment_disallowed_.IsSet(); |
| 758 } | 765 } |
| 759 | 766 |
| 760 } // namespace internal | 767 } // namespace internal |
| 761 } // namespace base | 768 } // namespace base |
| OLD | NEW |