| Index: base/threading/sequenced_worker_pool.h
|
| diff --git a/base/threading/sequenced_worker_pool.h b/base/threading/sequenced_worker_pool.h
|
| index 1616b8fdd260200b62330e22e173cdb42784f32a..ba0e444210fe0b05e00f231cf2f5157c28621510 100644
|
| --- a/base/threading/sequenced_worker_pool.h
|
| +++ b/base/threading/sequenced_worker_pool.h
|
| @@ -47,7 +47,8 @@ class SequencedTaskRunner;
|
| // destruction will be visible to T2.
|
| //
|
| // Example:
|
| -// SequencedWorkerPool::SequenceToken token = pool.GetSequenceToken();
|
| +// SequencedWorkerPool::SequenceToken token =
|
| +// SequencedWorkerPool::GetSequenceToken();
|
| // pool.PostSequencedWorkerTask(token, SequencedWorkerPool::SKIP_ON_SHUTDOWN,
|
| // FROM_HERE, base::Bind(...));
|
| // pool.PostSequencedWorkerTask(token, SequencedWorkerPool::SKIP_ON_SHUTDOWN,
|
| @@ -163,6 +164,19 @@ class BASE_EXPORT SequencedWorkerPool : public TaskRunner {
|
| // an unsequenced task, returns an invalid SequenceToken.
|
| static SequenceToken GetSequenceTokenForCurrentThread();
|
|
|
| + // Gets a SequencedTaskRunner for the current thread. If the current thread is
|
| + // running an unsequenced task, a new SequenceToken will be generated and set,
|
| + // so that the returned SequencedTaskRunner is guaranteed to run tasks after
|
| + // the current task has finished running.
|
| + static scoped_refptr<SequencedTaskRunner>
|
| + GetSequencedTaskRunnerForCurrentThread();
|
| +
|
| + // Returns a unique token that can be used to sequence tasks posted to
|
| + // PostSequencedWorkerTask(). Valid tokens are always nonzero.
|
| + // TODO(bauerb): Rename this to better differentiate from
|
| + // GetSequenceTokenForCurrentThread().
|
| + static SequenceToken GetSequenceToken();
|
| +
|
| // Returns the SequencedWorkerPool that owns this thread, or null if the
|
| // current thread is not a SequencedWorkerPool worker thread.
|
| static scoped_refptr<SequencedWorkerPool> GetWorkerPoolForCurrentThread();
|
| @@ -182,10 +196,6 @@ class BASE_EXPORT SequencedWorkerPool : public TaskRunner {
|
| const std::string& thread_name_prefix,
|
| TestingObserver* observer);
|
|
|
| - // Returns a unique token that can be used to sequence tasks posted to
|
| - // PostSequencedWorkerTask(). Valid tokens are always nonzero.
|
| - SequenceToken GetSequenceToken();
|
| -
|
| // Returns the sequence token associated with the given name. Calling this
|
| // function multiple times with the same string will always produce the
|
| // same sequence token. If the name has not been used before, a new token
|
| @@ -310,6 +320,10 @@ class BASE_EXPORT SequencedWorkerPool : public TaskRunner {
|
| // sequence_token.
|
| bool IsRunningSequenceOnCurrentThread(SequenceToken sequence_token) const;
|
|
|
| + // Returns true if any thread is currently processing a task with the given
|
| + // sequence token. Should only be called with a valid sequence token.
|
| + bool IsRunningSequence(SequenceToken sequence_token) const;
|
| +
|
| // Blocks until all pending tasks are complete. This should only be called in
|
| // unit tests when you want to validate something that should have happened.
|
| // This will not flush delayed tasks; delayed tasks get deleted.
|
|
|