| Index: base/threading/worker_pool_win.cc
|
| diff --git a/base/threading/worker_pool_win.cc b/base/threading/worker_pool_win.cc
|
| index 86463c7ec2ccbcf4c94eedd0d98f9db54ad64450..1e8be268748e52842d5fe24ce5a22dad9e9606eb 100644
|
| --- a/base/threading/worker_pool_win.cc
|
| +++ b/base/threading/worker_pool_win.cc
|
| @@ -9,12 +9,16 @@
|
| #include "base/debug/trace_event.h"
|
| #include "base/logging.h"
|
| #include "base/pending_task.h"
|
| +#include "base/threading/thread_local.h"
|
| #include "base/tracked_objects.h"
|
|
|
| namespace base {
|
|
|
| namespace {
|
|
|
| +base::LazyInstance<ThreadLocalBoolean>::Leaky
|
| + g_worker_pool_running_on_this_thread = LAZY_INSTANCE_INITIALIZER;
|
| +
|
| DWORD CALLBACK WorkItemCallback(void* param) {
|
| PendingTask* pending_task = static_cast<PendingTask*>(param);
|
| TRACE_EVENT2("task", "WorkItemCallback::Run",
|
| @@ -24,7 +28,9 @@ DWORD CALLBACK WorkItemCallback(void* param) {
|
| tracked_objects::TrackedTime start_time =
|
| tracked_objects::ThreadData::NowForStartOfRun(pending_task->birth_tally);
|
|
|
| + g_worker_pool_running_on_this_thread.Get().Set(true);
|
| pending_task->task.Run();
|
| + g_worker_pool_running_on_this_thread.Get().Set(false);
|
|
|
| tracked_objects::ThreadData::TallyRunOnWorkerThreadIfTracking(
|
| pending_task->birth_tally,
|
| @@ -52,10 +58,16 @@ bool PostTaskInternal(PendingTask* pending_task, bool task_is_slow) {
|
|
|
| } // namespace
|
|
|
| +// static
|
| bool WorkerPool::PostTask(const tracked_objects::Location& from_here,
|
| const base::Closure& task, bool task_is_slow) {
|
| PendingTask* pending_task = new PendingTask(from_here, task);
|
| return PostTaskInternal(pending_task, task_is_slow);
|
| }
|
|
|
| +// static
|
| +bool WorkerPool::RunsTasksOnCurrentThread() {
|
| + return g_worker_pool_running_on_this_thread.Get().Get();
|
| +}
|
| +
|
| } // namespace base
|
|
|