Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3862)

Unified Diff: base/threading/sequenced_worker_pool.h

Issue 9401032: Make SequencedWorkerPool a TaskRunner (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Updated with changes from 9347056 Created 8 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: base/threading/sequenced_worker_pool.h
diff --git a/base/threading/sequenced_worker_pool.h b/base/threading/sequenced_worker_pool.h
index 2bd3d581f5fb52eeac54c9d8ca229df9f115c603..dff01785850edcb868132cac0b3703f1f905832b 100644
--- a/base/threading/sequenced_worker_pool.h
+++ b/base/threading/sequenced_worker_pool.h
@@ -17,10 +17,11 @@
#include "base/base_export.h"
#include "base/basictypes.h"
#include "base/callback.h"
+#include "base/compiler_specific.h"
#include "base/memory/linked_ptr.h"
-#include "base/memory/ref_counted.h"
#include "base/synchronization/condition_variable.h"
#include "base/synchronization/lock.h"
+#include "base/task_runner.h"
#include "base/tracked_objects.h"
namespace base {
@@ -55,8 +56,10 @@ namespace base {
// not enforce shutdown semantics or allow us to specify how many worker
// threads to run. For the typical use case of random background work, we don't
// necessarily want to be super aggressive about creating threads.
-class BASE_EXPORT SequencedWorkerPool
- : public RefCountedThreadSafe<SequencedWorkerPool> {
+//
+// Note that SequencedWorkerPool is RefCountedThreadSafe (inherited
+// from TaskRunner).
+class BASE_EXPORT SequencedWorkerPool : public TaskRunner {
public:
// Defines what should happen to a task posted to the worker pool on shutdown.
enum WorkerShutdown {
@@ -195,6 +198,12 @@ class BASE_EXPORT SequencedWorkerPool
const Closure& task,
WorkerShutdown shutdown_behavior);
+ // TaskRunner implementation. Forwards to PostWorkerTask().
+ virtual bool PostDelayedTask(const tracked_objects::Location& from_here,
+ const Closure& task,
+ int64 delay_ms) OVERRIDE;
+ virtual bool RunsTasksOnCurrentThread() const OVERRIDE;
+
// 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.
//
@@ -214,8 +223,10 @@ class BASE_EXPORT SequencedWorkerPool
// and ownership of the pointer is kept with the caller.
void SetTestingObserver(TestingObserver* observer);
+ protected:
+ virtual ~SequencedWorkerPool();
+
private:
- friend class RefCountedThreadSafe<SequencedWorkerPool>;
class Worker;
struct SequencedTask {
@@ -228,8 +239,6 @@ class BASE_EXPORT SequencedWorkerPool
Closure task;
};
- ~SequencedWorkerPool();
-
// This function accepts a name and an ID. If the name is null, the
// token ID is used. This allows us to implement the optional name lookup
// from a single function without having to enter the lock a separate time.

Powered by Google App Engine
This is Rietveld 408576698