| 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 |