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

Unified Diff: base/threading/post_task_and_reply_impl.h

Issue 2180953002: Support PostTaskAndReply from a sequenced task. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 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/post_task_and_reply_impl.h
diff --git a/base/threading/post_task_and_reply_impl.h b/base/threading/post_task_and_reply_impl.h
index d21ab78de85501e4cd7dd8cf66d0e02e8176dc5f..5663b20a22445e68d6ce8375bcb788777ccf5df3 100644
--- a/base/threading/post_task_and_reply_impl.h
+++ b/base/threading/post_task_and_reply_impl.h
@@ -2,41 +2,26 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// This file contains the implementation shared by
-// TaskRunner::PostTaskAndReply and WorkerPool::PostTaskAndReply.
-
#ifndef BASE_THREADING_POST_TASK_AND_REPLY_IMPL_H_
#define BASE_THREADING_POST_TASK_AND_REPLY_IMPL_H_
+#include "base/base_export.h"
#include "base/callback_forward.h"
#include "base/location.h"
namespace base {
namespace internal {
-// Inherit from this in a class that implements PostTask appropriately
-// for sending to a destination thread.
-//
-// Note that 'reply' will always get posted back to your current
-// MessageLoop.
-//
-// If you're looking for a concrete implementation of
-// PostTaskAndReply, you probably want base::SingleThreadTaskRunner, or you
-// may want base::WorkerPool.
-class PostTaskAndReplyImpl {
- public:
- virtual ~PostTaskAndReplyImpl() = default;
-
- // Implementation for TaskRunner::PostTaskAndReply and
- // WorkerPool::PostTaskAndReply.
- bool PostTaskAndReply(const tracked_objects::Location& from_here,
- const Closure& task,
- const Closure& reply);
+using PostTaskCallback =
+ Callback<bool(const tracked_objects::Location&, const Closure& task)>;
- private:
- virtual bool PostTask(const tracked_objects::Location& from_here,
- const Closure& task) = 0;
-};
+// Posts |task| via |post_task_callback|. Then, when |task| completes its
+// execution, posts |reply| to the sequence from which this function was
+// invoked. Can only be called when SequencedTaskRunnerHandle::IsSet().
gab 2016/07/25 17:57:44 Indeed, this was also the conclusion from https://
fdoray 2016/07/25 20:40:04 PostTaskAndReply() doesn't have to be called on a
+bool BASE_EXPORT PostTaskAndReply(const tracked_objects::Location& from_here,
+ const Closure& task,
+ const Closure& reply,
+ const PostTaskCallback& post_task_callback);
} // namespace internal
} // namespace base

Powered by Google App Engine
This is Rietveld 408576698