diff options
author | akalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-09 02:58:59 +0000 |
---|---|---|
committer | akalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-09 02:58:59 +0000 |
commit | 2e2917c9acc57a1c71399fc4d0b46cd109ad7837 (patch) | |
tree | 92e9ef3c084c81617c267531e8180bdd1693ec0c /base/threading | |
parent | 799fe27b32f492e3392b3b1d58e605615bb27c47 (diff) | |
download | chromium_src-2e2917c9acc57a1c71399fc4d0b46cd109ad7837.zip chromium_src-2e2917c9acc57a1c71399fc4d0b46cd109ad7837.tar.gz chromium_src-2e2917c9acc57a1c71399fc4d0b46cd109ad7837.tar.bz2 |
Let sequence-checking work from a SequencedWorkerPool task's destructor
BUG=165590
Review URL: https://codereview.chromium.org/11682008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@181594 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/threading')
-rw-r--r-- | base/threading/sequenced_worker_pool.cc | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/base/threading/sequenced_worker_pool.cc b/base/threading/sequenced_worker_pool.cc index 5b73618..1ceb948 100644 --- a/base/threading/sequenced_worker_pool.cc +++ b/base/threading/sequenced_worker_pool.cc @@ -709,12 +709,15 @@ void SequencedWorkerPool::Inner::ThreadLoop(Worker* this_worker) { tracked_objects::ThreadData::TallyRunOnNamedThreadIfTracking(task, start_time, tracked_objects::ThreadData::NowForEndOfRun()); + // Make sure our task is erased outside the lock for the + // same reason we do this with delete_these_oustide_lock. + // Also, do it before calling set_running_task_info() so + // that sequence-checking from within the task's destructor + // still works. + task.task = Closure(); + this_worker->set_running_task_info( SequenceToken(), CONTINUE_ON_SHUTDOWN); - - // Make sure our task is erased outside the lock for the same reason - // we do this with delete_these_oustide_lock. - task.task = Closure(); } DidRunWorkerTask(task); // Must be done inside the lock. } else { |