diff options
author | mattm@chromium.org <mattm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-25 03:15:05 +0000 |
---|---|---|
committer | mattm@chromium.org <mattm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-25 03:15:05 +0000 |
commit | 8e1946f9fe92170caf2895ab7ac08fc310d67208 (patch) | |
tree | 852059e2b0906510b6d08331838335e5721ab118 /base/threading/worker_pool_win.cc | |
parent | 29abdce2a772b70b1b53411b48368b7abbd4a18f (diff) | |
download | chromium_src-8e1946f9fe92170caf2895ab7ac08fc310d67208.zip chromium_src-8e1946f9fe92170caf2895ab7ac08fc310d67208.tar.gz chromium_src-8e1946f9fe92170caf2895ab7ac08fc310d67208.tar.bz2 |
Add TaskRunner wrapper for WorkerPool.
BUG=114329
TEST=none
Review URL: http://codereview.chromium.org/10220001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@133855 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/threading/worker_pool_win.cc')
-rw-r--r-- | base/threading/worker_pool_win.cc | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/base/threading/worker_pool_win.cc b/base/threading/worker_pool_win.cc index 86463c7..1e8be26 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 |