Index: base/threading/thread_checker_impl.h |
diff --git a/base/threading/thread_checker_impl.h b/base/threading/thread_checker_impl.h |
index c92e143db0c3cbd1e5a2a6cdf5fc6a9608dcfea3..df41e3da993a4fdc164625361ebf898914703ab8 100644 |
--- a/base/threading/thread_checker_impl.h |
+++ b/base/threading/thread_checker_impl.h |
@@ -7,17 +7,18 @@ |
#include "base/base_export.h" |
#include "base/compiler_specific.h" |
+#include "base/sequence_token.h" |
#include "base/synchronization/lock.h" |
#include "base/threading/platform_thread.h" |
namespace base { |
-// Real implementation of ThreadChecker, for use in debug mode, or |
-// for temporary use in release mode (e.g. to CHECK on a threading issue |
-// seen only in the wild). |
+// Real implementation of ThreadChecker, for use in debug mode, or for temporary |
+// use in release mode (e.g. to CHECK on a threading issue seen only in the |
+// wild). |
// |
-// Note: You should almost always use the ThreadChecker class to get the |
-// right version for your build configuration. |
+// Note: You should almost always use the ThreadChecker class to get the right |
+// version for your build configuration. |
class BASE_EXPORT ThreadCheckerImpl { |
public: |
ThreadCheckerImpl(); |
@@ -31,12 +32,21 @@ class BASE_EXPORT ThreadCheckerImpl { |
void DetachFromThread(); |
private: |
- void EnsureThreadIdAssigned() const; |
+ void EnsureAssigned() const; |
+ // Members are mutable so that CalledOnValidThread() can set them. |
+ |
+ // Synchronizes access to all members. |
mutable base::Lock lock_; |
- // This is mutable so that CalledOnValidThread can set it. |
- // It's guarded by |lock_|. |
- mutable PlatformThreadRef valid_thread_id_; |
+ |
+ // Thread on which CalledOnValidThread() may return true. |
+ mutable PlatformThreadRef thread_id_; |
+ |
+ // SequenceToken for which CalledOnValidThread() may return true. Used to |
+ // ensure that CalledOnValidThread() doesn't return true for TaskScheduler |
+ // tasks that happen to run on the same thread but weren't posted to the same |
+ // SingleThreadTaskRunner. |
+ mutable internal::SequenceToken sequence_token_; |
}; |
} // namespace base |