Index: base/message_loop/message_loop_proxy_impl.h |
diff --git a/base/message_loop/message_loop_proxy_impl.h b/base/message_loop/message_loop_proxy_impl.h |
index 0fe629f9d140c0244128e49598308a9a48d15366..fa611c290853451f9779a9cb35699c7c94aff763 100644 |
--- a/base/message_loop/message_loop_proxy_impl.h |
+++ b/base/message_loop/message_loop_proxy_impl.h |
@@ -9,6 +9,7 @@ |
#include "base/memory/ref_counted.h" |
#include "base/message_loop/message_loop_proxy.h" |
#include "base/pending_task.h" |
+#include "base/synchronization/lock.h" |
#include "base/threading/platform_thread.h" |
namespace base { |
@@ -24,6 +25,9 @@ class BASE_EXPORT MessageLoopProxyImpl : public MessageLoopProxy { |
explicit MessageLoopProxyImpl( |
scoped_refptr<IncomingTaskQueue> incoming_queue); |
+ // Initialize this message loop proxy on the current thread. |
+ void BindToCurrentThread(); |
+ |
// MessageLoopProxy implementation |
bool PostDelayedTask(const tracked_objects::Location& from_here, |
const base::Closure& task, |
@@ -40,8 +44,10 @@ class BASE_EXPORT MessageLoopProxyImpl : public MessageLoopProxy { |
// THe incoming queue receiving all posted tasks. |
scoped_refptr<IncomingTaskQueue> incoming_queue_; |
- // ID of the thread |this| was created on. |
+ // ID of the thread |this| was created on. Could be accessed on multiple |
+ // threads, protected by |valid_thread_id_lock_|. |
PlatformThreadId valid_thread_id_; |
+ mutable Lock valid_thread_id_lock_; |
DISALLOW_COPY_AND_ASSIGN(MessageLoopProxyImpl); |
}; |