diff options
author | milanb@chromium.org <milanb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-15 11:56:10 +0000 |
---|---|---|
committer | milanb@chromium.org <milanb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-15 11:56:10 +0000 |
commit | b404d3508039b7b186847e20e49a469c0a0997e7 (patch) | |
tree | cc69c394f718ce6597ab952208bddc26f2f103a3 /base | |
parent | 82ebf8bc50c6acf951c422c33ada6f9738fc86ce (diff) | |
download | chromium_src-b404d3508039b7b186847e20e49a469c0a0997e7.zip chromium_src-b404d3508039b7b186847e20e49a469c0a0997e7.tar.gz chromium_src-b404d3508039b7b186847e20e49a469c0a0997e7.tar.bz2 |
Make sure that shutdown blocking SequencedWorkerPool use Critical Closures.
SequencedWorkerPool task that are pushed with the shutdown blocking enum must
block shutdown, which means that the task execution is important enough that
it has to be executed before going into background. Those tasks are
transformed into CriticalTasks.
BUG=none
Review URL: https://chromiumcodereview.appspot.com/10829318
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@151685 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base')
-rw-r--r-- | base/threading/sequenced_worker_pool.cc | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/base/threading/sequenced_worker_pool.cc b/base/threading/sequenced_worker_pool.cc index fb6b247..68127a5 100644 --- a/base/threading/sequenced_worker_pool.cc +++ b/base/threading/sequenced_worker_pool.cc @@ -13,6 +13,7 @@ #include "base/atomicops.h" #include "base/callback.h" #include "base/compiler_specific.h" +#include "base/critical_closure.h" #include "base/logging.h" #include "base/memory/linked_ptr.h" #include "base/message_loop_proxy.h" @@ -490,7 +491,9 @@ bool SequencedWorkerPool::Inner::PostTask( sequenced.sequence_token_id = sequence_token.id_; sequenced.shutdown_behavior = shutdown_behavior; sequenced.posted_from = from_here; - sequenced.task = task; + sequenced.task = + shutdown_behavior == BLOCK_SHUTDOWN ? + base::MakeCriticalClosure(task) : task; int create_thread_id = 0; { |