diff options
Diffstat (limited to 'base/threading/non_thread_safe.h')
-rw-r--r-- | base/threading/non_thread_safe.h | 51 |
1 files changed, 22 insertions, 29 deletions
diff --git a/base/threading/non_thread_safe.h b/base/threading/non_thread_safe.h index 868a031..bc3be3c 100644 --- a/base/threading/non_thread_safe.h +++ b/base/threading/non_thread_safe.h @@ -6,13 +6,29 @@ #define BASE_THREADING_NON_THREAD_SAFE_H_ #pragma once -#include "base/threading/thread_checker.h" +#ifndef NDEBUG +#include "base/threading/non_thread_safe_impl.h" +#endif namespace base { -// A helper class used to help verify that methods of a class are -// called from the same thread. One can inherit from this class and use -// CalledOnValidThread() to verify. +// Do nothing implementation of NonThreadSafe, for release mode. +// +// Note: You should almost always use the NonThreadSafe class to get +// the right version of the class for your build configuration. +class NonThreadSafeDoNothing { + public: + bool CalledOnValidThread() const { + return true; + } + + protected: + void DetachFromThread() {} +}; + +// NonThreadSafe is a helper class used to help verify that methods of a +// class are called from the same thread. One can inherit from this class +// and use CalledOnValidThread() to verify. // // This is intended to be used with classes that appear to be thread safe, but // aren't. For example, a service or a singleton like the preferences system. @@ -29,33 +45,10 @@ namespace base { // In Release mode, CalledOnValidThread will always return true. // #ifndef NDEBUG -class NonThreadSafe { - public: - ~NonThreadSafe(); - - bool CalledOnValidThread() const; - - protected: - // Changes the thread that is checked for in CalledOnValidThread. The next - // call to CalledOnValidThread will attach this class to a new thread. It is - // up to the NonThreadSafe derived class to decide to expose this or not. - // This may be useful when an object may be created on one thread and then - // used exclusively on another thread. - void DetachFromThread(); - - private: - ThreadChecker thread_checker_; +class NonThreadSafe : public NonThreadSafeImpl { }; #else -// Do nothing in release mode. -class NonThreadSafe { - public: - bool CalledOnValidThread() const { - return true; - } - - protected: - void DetachFromThread() {} +class NonThreadSafe : public NonThreadSafeDoNothing { }; #endif // NDEBUG |