Chromium Code Reviews| OLD | NEW |
|---|---|
| 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/task_tracker.h" | 5 #include "base/task_scheduler/task_tracker.h" |
| 6 | 6 |
| 7 #include "base/callback.h" | 7 #include "base/callback.h" |
| 8 #include "base/debug/task_annotator.h" | 8 #include "base/debug/task_annotator.h" |
| 9 #include "base/metrics/histogram_macros.h" | 9 #include "base/metrics/histogram_macros.h" |
| 10 #include "base/thread_task_runner_handle.h" | 10 #include "base/thread_task_runner_handle.h" |
| 11 #include "base/threading/sequenced_task_runner_handle.h" | 11 #include "base/threading/sequenced_task_runner_handle.h" |
| 12 #include "base/threading/thread_restrictions.h" | 12 #include "base/threading/thread_restrictions.h" |
| 13 #include "base/trace_event/trace_event.h" | |
| 13 | 14 |
| 14 namespace base { | 15 namespace base { |
| 15 namespace internal { | 16 namespace internal { |
| 16 | 17 |
| 17 namespace { | 18 namespace { |
| 18 | 19 |
| 19 const char kQueueFunctionName[] = "base::PostTask"; | 20 const char kQueueFunctionName[] = "base::PostTask"; |
| 21 const char kRunFunctionName[] = "TaskSchedulerRunTask"; | |
|
robliao
2016/05/03 16:46:51
Comment where this name originated.
fdoray
2016/05/03 17:07:14
Done.
| |
| 20 | 22 |
| 21 // Upper bound for the | 23 // Upper bound for the |
| 22 // TaskScheduler.BlockShutdownTasksPostedDuringShutdown histogram. | 24 // TaskScheduler.BlockShutdownTasksPostedDuringShutdown histogram. |
| 23 const HistogramBase::Sample kMaxBlockShutdownTasksPostedDuringShutdown = 1000; | 25 const HistogramBase::Sample kMaxBlockShutdownTasksPostedDuringShutdown = 1000; |
| 24 | 26 |
| 25 void RecordNumBlockShutdownTasksPostedDuringShutdown( | 27 void RecordNumBlockShutdownTasksPostedDuringShutdown( |
| 26 HistogramBase::Sample value) { | 28 HistogramBase::Sample value) { |
| 27 UMA_HISTOGRAM_CUSTOM_COUNTS( | 29 UMA_HISTOGRAM_CUSTOM_COUNTS( |
| 28 "TaskScheduler.BlockShutdownTasksPostedDuringShutdown", value, 1, | 30 "TaskScheduler.BlockShutdownTasksPostedDuringShutdown", value, 1, |
| 29 kMaxBlockShutdownTasksPostedDuringShutdown, 50); | 31 kMaxBlockShutdownTasksPostedDuringShutdown, 50); |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 95 DCHECK(!task->sequenced_task_runner_ref || | 97 DCHECK(!task->sequenced_task_runner_ref || |
| 96 !task->single_thread_task_runner_ref); | 98 !task->single_thread_task_runner_ref); |
| 97 if (task->sequenced_task_runner_ref) { | 99 if (task->sequenced_task_runner_ref) { |
| 98 sequenced_task_runner_handle.reset( | 100 sequenced_task_runner_handle.reset( |
| 99 new SequencedTaskRunnerHandle(task->sequenced_task_runner_ref)); | 101 new SequencedTaskRunnerHandle(task->sequenced_task_runner_ref)); |
| 100 } else if (task->single_thread_task_runner_ref) { | 102 } else if (task->single_thread_task_runner_ref) { |
| 101 single_thread_task_runner_handle.reset( | 103 single_thread_task_runner_handle.reset( |
| 102 new ThreadTaskRunnerHandle(task->single_thread_task_runner_ref)); | 104 new ThreadTaskRunnerHandle(task->single_thread_task_runner_ref)); |
| 103 } | 105 } |
| 104 | 106 |
| 107 TRACE_TASK_EXECUTION(kRunFunctionName, *task); | |
| 108 | |
| 105 debug::TaskAnnotator task_annotator; | 109 debug::TaskAnnotator task_annotator; |
| 106 task_annotator.RunTask(kQueueFunctionName, *task); | 110 task_annotator.RunTask(kQueueFunctionName, *task); |
| 107 } | 111 } |
| 108 | 112 |
| 109 AfterRunTask(shutdown_behavior); | 113 AfterRunTask(shutdown_behavior); |
| 110 } | 114 } |
| 111 | 115 |
| 112 bool TaskTracker::IsShuttingDownForTesting() const { | 116 bool TaskTracker::IsShuttingDownForTesting() const { |
| 113 AutoSchedulerLock auto_lock(lock_); | 117 AutoSchedulerLock auto_lock(lock_); |
| 114 return !!shutdown_cv_; | 118 return !!shutdown_cv_; |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 196 AutoSchedulerLock auto_lock(lock_); | 200 AutoSchedulerLock auto_lock(lock_); |
| 197 DCHECK_GT(num_tasks_blocking_shutdown_, 0U); | 201 DCHECK_GT(num_tasks_blocking_shutdown_, 0U); |
| 198 --num_tasks_blocking_shutdown_; | 202 --num_tasks_blocking_shutdown_; |
| 199 if (num_tasks_blocking_shutdown_ == 0 && shutdown_cv_) | 203 if (num_tasks_blocking_shutdown_ == 0 && shutdown_cv_) |
| 200 shutdown_cv_->Signal(); | 204 shutdown_cv_->Signal(); |
| 201 } | 205 } |
| 202 } | 206 } |
| 203 | 207 |
| 204 } // namespace internal | 208 } // namespace internal |
| 205 } // namespace base | 209 } // namespace base |
| OLD | NEW |