| Index: base/threading/non_thread_safe.h
|
| diff --git a/base/threading/non_thread_safe.h b/base/threading/non_thread_safe.h
|
| index 868a031e2f6984258e59687daaaa08379f3a1430..bc3be3c4a0a1cffb43aac639a3d7b6383277b08e 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
|
|
|
|
|