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 830 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
841 | 841 |
842 scoped_refptr<TaskRunner>& task_runner = | 842 scoped_refptr<TaskRunner>& task_runner = |
843 sequence_token_id ? sequenced_task_runner_map_[sequence_token_id] | 843 sequence_token_id ? sequenced_task_runner_map_[sequence_token_id] |
844 : unsequenced_task_runners_[static_cast<int>( | 844 : unsequenced_task_runners_[static_cast<int>( |
845 traits.shutdown_behavior())]; | 845 traits.shutdown_behavior())]; |
846 | 846 |
847 // TODO(fdoray): DCHECK that all tasks posted to the same sequence have the | 847 // TODO(fdoray): DCHECK that all tasks posted to the same sequence have the |
848 // same shutdown behavior. | 848 // same shutdown behavior. |
849 | 849 |
850 if (!task_runner) { | 850 if (!task_runner) { |
851 ExecutionMode execution_mode = | 851 task_runner = sequence_token_id |
852 sequence_token_id ? ExecutionMode::SEQUENCED : ExecutionMode::PARALLEL; | 852 ? CreateSequencedTaskRunnerWithTraits(traits) |
853 task_runner = CreateTaskRunnerWithTraits(traits, execution_mode); | 853 : CreateTaskRunnerWithTraits(traits); |
854 } | 854 } |
855 | 855 |
856 return task_runner; | 856 return task_runner; |
857 } | 857 } |
858 | 858 |
859 bool SequencedWorkerPool::Inner::RunsTasksOnCurrentThread() const { | 859 bool SequencedWorkerPool::Inner::RunsTasksOnCurrentThread() const { |
860 AutoLock lock(lock_); | 860 AutoLock lock(lock_); |
861 if (subtle::NoBarrier_Load(&g_all_pools_state) == | 861 if (subtle::NoBarrier_Load(&g_all_pools_state) == |
862 AllPoolsState::REDIRECTED_TO_TASK_SCHEDULER) { | 862 AllPoolsState::REDIRECTED_TO_TASK_SCHEDULER) { |
863 if (!runs_tasks_on_verifier_) { | 863 if (!runs_tasks_on_verifier_) { |
864 runs_tasks_on_verifier_ = CreateTaskRunnerWithTraits( | 864 runs_tasks_on_verifier_ = CreateTaskRunnerWithTraits( |
865 TaskTraits().WithFileIO().WithPriority(task_priority_), | 865 TaskTraits().WithFileIO().WithPriority(task_priority_)); |
866 ExecutionMode::PARALLEL); | |
867 } | 866 } |
868 return runs_tasks_on_verifier_->RunsTasksOnCurrentThread(); | 867 return runs_tasks_on_verifier_->RunsTasksOnCurrentThread(); |
869 } else { | 868 } else { |
870 return ContainsKey(threads_, PlatformThread::CurrentId()); | 869 return ContainsKey(threads_, PlatformThread::CurrentId()); |
871 } | 870 } |
872 } | 871 } |
873 | 872 |
874 bool SequencedWorkerPool::Inner::IsRunningSequenceOnCurrentThread( | 873 bool SequencedWorkerPool::Inner::IsRunningSequenceOnCurrentThread( |
875 SequenceToken sequence_token) const { | 874 SequenceToken sequence_token) const { |
876 DCHECK(sequence_token.IsValid()); | 875 DCHECK(sequence_token.IsValid()); |
(...skipping 740 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1617 bool SequencedWorkerPool::IsShutdownInProgress() { | 1616 bool SequencedWorkerPool::IsShutdownInProgress() { |
1618 return inner_->IsShutdownInProgress(); | 1617 return inner_->IsShutdownInProgress(); |
1619 } | 1618 } |
1620 | 1619 |
1621 bool SequencedWorkerPool::IsRunningSequenceOnCurrentThread( | 1620 bool SequencedWorkerPool::IsRunningSequenceOnCurrentThread( |
1622 SequenceToken sequence_token) const { | 1621 SequenceToken sequence_token) const { |
1623 return inner_->IsRunningSequenceOnCurrentThread(sequence_token); | 1622 return inner_->IsRunningSequenceOnCurrentThread(sequence_token); |
1624 } | 1623 } |
1625 | 1624 |
1626 } // namespace base | 1625 } // namespace base |
OLD | NEW |