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

Side by Side Diff: base/task_scheduler/scheduler_worker_pool_impl.cc

Issue 2504443002: Cleanup: Move SchedulerWorkerPoolImpl ForTesting Methods to the Bottom of the Public Section (Closed)
Patch Set: Clang Format Is Now Enforced in Base Created 4 years, 1 month 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
« no previous file with comments | « base/task_scheduler/scheduler_worker_pool_impl.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 302 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 params.io_restriction(), 313 params.io_restriction(),
314 params.suggested_reclaim_time(), 314 params.suggested_reclaim_time(),
315 task_tracker, delayed_task_manager)); 315 task_tracker, delayed_task_manager));
316 if (worker_pool->Initialize(params.priority_hint(), params.max_threads(), 316 if (worker_pool->Initialize(params.priority_hint(), params.max_threads(),
317 re_enqueue_sequence_callback)) { 317 re_enqueue_sequence_callback)) {
318 return worker_pool; 318 return worker_pool;
319 } 319 }
320 return nullptr; 320 return nullptr;
321 } 321 }
322 322
323 void SchedulerWorkerPoolImpl::WaitForAllWorkersIdleForTesting() {
324 AutoSchedulerLock auto_lock(idle_workers_stack_lock_);
325 while (idle_workers_stack_.Size() < workers_.size())
326 idle_workers_stack_cv_for_testing_->Wait();
327 }
328
329 void SchedulerWorkerPoolImpl::JoinForTesting() {
330 DCHECK(!CanWorkerDetachForTesting() || suggested_reclaim_time_.is_max()) <<
331 "Workers can detach during join.";
332 for (const auto& worker : workers_)
333 worker->JoinForTesting();
334
335 DCHECK(!join_for_testing_returned_.IsSignaled());
336 join_for_testing_returned_.Signal();
337 }
338
339 void SchedulerWorkerPoolImpl::DisallowWorkerDetachmentForTesting() {
340 worker_detachment_disallowed_.Set();
341 }
342
343 scoped_refptr<TaskRunner> SchedulerWorkerPoolImpl::CreateTaskRunnerWithTraits( 323 scoped_refptr<TaskRunner> SchedulerWorkerPoolImpl::CreateTaskRunnerWithTraits(
344 const TaskTraits& traits) { 324 const TaskTraits& traits) {
345 return make_scoped_refptr(new SchedulerParallelTaskRunner(traits, this)); 325 return make_scoped_refptr(new SchedulerParallelTaskRunner(traits, this));
346 } 326 }
347 327
348 scoped_refptr<SequencedTaskRunner> 328 scoped_refptr<SequencedTaskRunner>
349 SchedulerWorkerPoolImpl::CreateSequencedTaskRunnerWithTraits( 329 SchedulerWorkerPoolImpl::CreateSequencedTaskRunnerWithTraits(
350 const TaskTraits& traits) { 330 const TaskTraits& traits) {
351 return make_scoped_refptr(new SchedulerSequencedTaskRunner(traits, this)); 331 return make_scoped_refptr(new SchedulerSequencedTaskRunner(traits, this));
352 } 332 }
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 WakeUpOneWorker(); 425 WakeUpOneWorker();
446 } 426 }
447 } 427 }
448 428
449 void SchedulerWorkerPoolImpl::GetHistograms( 429 void SchedulerWorkerPoolImpl::GetHistograms(
450 std::vector<const HistogramBase*>* histograms) const { 430 std::vector<const HistogramBase*>* histograms) const {
451 histograms->push_back(detach_duration_histogram_); 431 histograms->push_back(detach_duration_histogram_);
452 histograms->push_back(num_tasks_between_waits_histogram_); 432 histograms->push_back(num_tasks_between_waits_histogram_);
453 } 433 }
454 434
435 void SchedulerWorkerPoolImpl::WaitForAllWorkersIdleForTesting() {
436 AutoSchedulerLock auto_lock(idle_workers_stack_lock_);
437 while (idle_workers_stack_.Size() < workers_.size())
438 idle_workers_stack_cv_for_testing_->Wait();
439 }
440
441 void SchedulerWorkerPoolImpl::JoinForTesting() {
442 DCHECK(!CanWorkerDetachForTesting() || suggested_reclaim_time_.is_max())
443 << "Workers can detach during join.";
444 for (const auto& worker : workers_)
445 worker->JoinForTesting();
446
447 DCHECK(!join_for_testing_returned_.IsSignaled());
448 join_for_testing_returned_.Signal();
449 }
450
451 void SchedulerWorkerPoolImpl::DisallowWorkerDetachmentForTesting() {
452 worker_detachment_disallowed_.Set();
453 }
454
455 SchedulerWorkerPoolImpl::SchedulerSingleThreadTaskRunner:: 455 SchedulerWorkerPoolImpl::SchedulerSingleThreadTaskRunner::
456 SchedulerSingleThreadTaskRunner(const TaskTraits& traits, 456 SchedulerSingleThreadTaskRunner(const TaskTraits& traits,
457 SchedulerWorkerPool* worker_pool, 457 SchedulerWorkerPool* worker_pool,
458 SchedulerWorker* worker) 458 SchedulerWorker* worker)
459 : traits_(traits), 459 : traits_(traits),
460 worker_pool_(worker_pool), 460 worker_pool_(worker_pool),
461 worker_(worker) { 461 worker_(worker) {
462 DCHECK(worker_pool_); 462 DCHECK(worker_pool_);
463 DCHECK(worker_); 463 DCHECK(worker_);
464 static_cast<SchedulerWorkerDelegateImpl*>(worker_->delegate())-> 464 static_cast<SchedulerWorkerDelegateImpl*>(worker_->delegate())->
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after
790 AutoSchedulerLock auto_lock(idle_workers_stack_lock_); 790 AutoSchedulerLock auto_lock(idle_workers_stack_lock_);
791 idle_workers_stack_.Remove(worker); 791 idle_workers_stack_.Remove(worker);
792 } 792 }
793 793
794 bool SchedulerWorkerPoolImpl::CanWorkerDetachForTesting() { 794 bool SchedulerWorkerPoolImpl::CanWorkerDetachForTesting() {
795 return !worker_detachment_disallowed_.IsSet(); 795 return !worker_detachment_disallowed_.IsSet();
796 } 796 }
797 797
798 } // namespace internal 798 } // namespace internal
799 } // namespace base 799 } // namespace base
OLDNEW
« no previous file with comments | « base/task_scheduler/scheduler_worker_pool_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698