OLD | NEW |
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 794 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
805 "TaskShutdownBehavior and WorkerShutdown enum mismatch for " | 805 "TaskShutdownBehavior and WorkerShutdown enum mismatch for " |
806 "SKIP_ON_SHUTDOWN."); | 806 "SKIP_ON_SHUTDOWN."); |
807 static_assert(static_cast<int>(TaskShutdownBehavior::BLOCK_SHUTDOWN) == | 807 static_assert(static_cast<int>(TaskShutdownBehavior::BLOCK_SHUTDOWN) == |
808 static_cast<int>(BLOCK_SHUTDOWN), | 808 static_cast<int>(BLOCK_SHUTDOWN), |
809 "TaskShutdownBehavior and WorkerShutdown enum mismatch for " | 809 "TaskShutdownBehavior and WorkerShutdown enum mismatch for " |
810 "BLOCK_SHUTDOWN."); | 810 "BLOCK_SHUTDOWN."); |
811 | 811 |
812 const TaskShutdownBehavior task_shutdown_behavior = | 812 const TaskShutdownBehavior task_shutdown_behavior = |
813 static_cast<TaskShutdownBehavior>(sequenced.shutdown_behavior); | 813 static_cast<TaskShutdownBehavior>(sequenced.shutdown_behavior); |
814 const TaskTraits traits = TaskTraits() | 814 const TaskTraits traits = TaskTraits() |
815 .WithFileIO() | 815 .MayBlock() |
816 .WithWait() | 816 .WithSyncPrimitives() |
817 .WithPriority(task_priority_) | 817 .WithPriority(task_priority_) |
818 .WithShutdownBehavior(task_shutdown_behavior); | 818 .WithShutdownBehavior(task_shutdown_behavior); |
819 return GetTaskSchedulerTaskRunner(sequenced.sequence_token_id, traits) | 819 return GetTaskSchedulerTaskRunner(sequenced.sequence_token_id, traits) |
820 ->PostDelayedTask(sequenced.posted_from, sequenced.task, delay); | 820 ->PostDelayedTask(sequenced.posted_from, sequenced.task, delay); |
821 } | 821 } |
822 | 822 |
823 scoped_refptr<TaskRunner> | 823 scoped_refptr<TaskRunner> |
824 SequencedWorkerPool::Inner::GetTaskSchedulerTaskRunner( | 824 SequencedWorkerPool::Inner::GetTaskSchedulerTaskRunner( |
825 int sequence_token_id, | 825 int sequence_token_id, |
826 const TaskTraits& traits) { | 826 const TaskTraits& traits) { |
(...skipping 30 matching lines...) Expand all Loading... |
857 } | 857 } |
858 | 858 |
859 return task_runner; | 859 return task_runner; |
860 } | 860 } |
861 | 861 |
862 bool SequencedWorkerPool::Inner::RunsTasksOnCurrentThread() const { | 862 bool SequencedWorkerPool::Inner::RunsTasksOnCurrentThread() const { |
863 AutoLock lock(lock_); | 863 AutoLock lock(lock_); |
864 if (g_all_pools_state == AllPoolsState::REDIRECTED_TO_TASK_SCHEDULER) { | 864 if (g_all_pools_state == AllPoolsState::REDIRECTED_TO_TASK_SCHEDULER) { |
865 if (!runs_tasks_on_verifier_) { | 865 if (!runs_tasks_on_verifier_) { |
866 runs_tasks_on_verifier_ = CreateTaskRunnerWithTraits( | 866 runs_tasks_on_verifier_ = CreateTaskRunnerWithTraits( |
867 TaskTraits().WithFileIO().WithWait().WithPriority(task_priority_)); | 867 TaskTraits().MayBlock().WithSyncPrimitives().WithPriority( |
| 868 task_priority_)); |
868 } | 869 } |
869 return runs_tasks_on_verifier_->RunsTasksOnCurrentThread(); | 870 return runs_tasks_on_verifier_->RunsTasksOnCurrentThread(); |
870 } else { | 871 } else { |
871 return ContainsKey(threads_, PlatformThread::CurrentId()); | 872 return ContainsKey(threads_, PlatformThread::CurrentId()); |
872 } | 873 } |
873 } | 874 } |
874 | 875 |
875 bool SequencedWorkerPool::Inner::IsRunningSequenceOnCurrentThread( | 876 bool SequencedWorkerPool::Inner::IsRunningSequenceOnCurrentThread( |
876 SequenceToken sequence_token) const { | 877 SequenceToken sequence_token) const { |
877 DCHECK(sequence_token.IsValid()); | 878 DCHECK(sequence_token.IsValid()); |
(...skipping 726 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1604 bool SequencedWorkerPool::IsShutdownInProgress() { | 1605 bool SequencedWorkerPool::IsShutdownInProgress() { |
1605 return inner_->IsShutdownInProgress(); | 1606 return inner_->IsShutdownInProgress(); |
1606 } | 1607 } |
1607 | 1608 |
1608 bool SequencedWorkerPool::IsRunningSequenceOnCurrentThread( | 1609 bool SequencedWorkerPool::IsRunningSequenceOnCurrentThread( |
1609 SequenceToken sequence_token) const { | 1610 SequenceToken sequence_token) const { |
1610 return inner_->IsRunningSequenceOnCurrentThread(sequence_token); | 1611 return inner_->IsRunningSequenceOnCurrentThread(sequence_token); |
1611 } | 1612 } |
1612 | 1613 |
1613 } // namespace base | 1614 } // namespace base |
OLD | NEW |