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

Side by Side Diff: base/threading/sequenced_worker_pool.cc

Issue 2531663003: TaskScheduler: Add TaskTraits::WithWait(). (Closed)
Patch Set: CR danakj #22 (AssertWaitAllowed) Created 4 years 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/task_traits.cc ('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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/threading/sequenced_worker_pool.h" 5 #include "base/threading/sequenced_worker_pool.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <list> 9 #include <list>
10 #include <map> 10 #include <map>
(...skipping 790 matching lines...) Expand 10 before | Expand all | Expand 10 after
801 "SKIP_ON_SHUTDOWN."); 801 "SKIP_ON_SHUTDOWN.");
802 static_assert(static_cast<int>(TaskShutdownBehavior::BLOCK_SHUTDOWN) == 802 static_assert(static_cast<int>(TaskShutdownBehavior::BLOCK_SHUTDOWN) ==
803 static_cast<int>(BLOCK_SHUTDOWN), 803 static_cast<int>(BLOCK_SHUTDOWN),
804 "TaskShutdownBehavior and WorkerShutdown enum mismatch for " 804 "TaskShutdownBehavior and WorkerShutdown enum mismatch for "
805 "BLOCK_SHUTDOWN."); 805 "BLOCK_SHUTDOWN.");
806 806
807 const TaskShutdownBehavior task_shutdown_behavior = 807 const TaskShutdownBehavior task_shutdown_behavior =
808 static_cast<TaskShutdownBehavior>(sequenced.shutdown_behavior); 808 static_cast<TaskShutdownBehavior>(sequenced.shutdown_behavior);
809 const TaskTraits traits = TaskTraits() 809 const TaskTraits traits = TaskTraits()
810 .WithFileIO() 810 .WithFileIO()
811 .WithWait()
811 .WithPriority(task_priority_) 812 .WithPriority(task_priority_)
812 .WithShutdownBehavior(task_shutdown_behavior); 813 .WithShutdownBehavior(task_shutdown_behavior);
813 return GetTaskSchedulerTaskRunner(sequenced.sequence_token_id, traits) 814 return GetTaskSchedulerTaskRunner(sequenced.sequence_token_id, traits)
814 ->PostDelayedTask(sequenced.posted_from, sequenced.task, delay); 815 ->PostDelayedTask(sequenced.posted_from, sequenced.task, delay);
815 } 816 }
816 817
817 scoped_refptr<TaskRunner> 818 scoped_refptr<TaskRunner>
818 SequencedWorkerPool::Inner::GetTaskSchedulerTaskRunner( 819 SequencedWorkerPool::Inner::GetTaskSchedulerTaskRunner(
819 int sequence_token_id, 820 int sequence_token_id,
820 const TaskTraits& traits) { 821 const TaskTraits& traits) {
(...skipping 30 matching lines...) Expand all
851 } 852 }
852 853
853 return task_runner; 854 return task_runner;
854 } 855 }
855 856
856 bool SequencedWorkerPool::Inner::RunsTasksOnCurrentThread() const { 857 bool SequencedWorkerPool::Inner::RunsTasksOnCurrentThread() const {
857 AutoLock lock(lock_); 858 AutoLock lock(lock_);
858 if (g_all_pools_state == AllPoolsState::REDIRECTED_TO_TASK_SCHEDULER) { 859 if (g_all_pools_state == AllPoolsState::REDIRECTED_TO_TASK_SCHEDULER) {
859 if (!runs_tasks_on_verifier_) { 860 if (!runs_tasks_on_verifier_) {
860 runs_tasks_on_verifier_ = CreateTaskRunnerWithTraits( 861 runs_tasks_on_verifier_ = CreateTaskRunnerWithTraits(
861 TaskTraits().WithFileIO().WithPriority(task_priority_)); 862 TaskTraits().WithFileIO().WithWait().WithPriority(task_priority_));
862 } 863 }
863 return runs_tasks_on_verifier_->RunsTasksOnCurrentThread(); 864 return runs_tasks_on_verifier_->RunsTasksOnCurrentThread();
864 } else { 865 } else {
865 return ContainsKey(threads_, PlatformThread::CurrentId()); 866 return ContainsKey(threads_, PlatformThread::CurrentId());
866 } 867 }
867 } 868 }
868 869
869 bool SequencedWorkerPool::Inner::IsRunningSequenceOnCurrentThread( 870 bool SequencedWorkerPool::Inner::IsRunningSequenceOnCurrentThread(
870 SequenceToken sequence_token) const { 871 SequenceToken sequence_token) const {
871 DCHECK(sequence_token.IsValid()); 872 DCHECK(sequence_token.IsValid());
(...skipping 724 matching lines...) Expand 10 before | Expand all | Expand 10 after
1596 bool SequencedWorkerPool::IsShutdownInProgress() { 1597 bool SequencedWorkerPool::IsShutdownInProgress() {
1597 return inner_->IsShutdownInProgress(); 1598 return inner_->IsShutdownInProgress();
1598 } 1599 }
1599 1600
1600 bool SequencedWorkerPool::IsRunningSequenceOnCurrentThread( 1601 bool SequencedWorkerPool::IsRunningSequenceOnCurrentThread(
1601 SequenceToken sequence_token) const { 1602 SequenceToken sequence_token) const {
1602 return inner_->IsRunningSequenceOnCurrentThread(sequence_token); 1603 return inner_->IsRunningSequenceOnCurrentThread(sequence_token);
1603 } 1604 }
1604 1605
1605 } // namespace base 1606 } // namespace base
OLDNEW
« no previous file with comments | « base/task_scheduler/task_traits.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698