Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef BASE_NON_THREAD_SAFE_H__
6 #define BASE_NON_THREAD_SAFE_H__
8 #include "base/platform_thread.h"
10 // A helper class used to help verify that methods of a class are
11 // called from the same thread. One can inherit from this class and use
12 // CalledOnValidThread() to verify.
13 //
14 // This is intended to be used with classes that appear to be thread safe, but
15 // aren't. For example, a service or a singleton like the preferences system.
16 //
17 // Example:
18 // class MyClass : public NonThreadSafe {
19 // public:
20 // void Foo() {
21 // DCHECK(CalledOnValidThread());
22 // ... (do stuff) ...
23 // }
24 // }
25 //
26 // In Release mode, CalledOnValidThread will always return true.
27 //
28 #ifndef NDEBUG
29 class NonThreadSafe {
30 public:
31 NonThreadSafe();
32 ~NonThreadSafe();
34 bool CalledOnValidThread() const;
36 private:
37 PlatformThreadId valid_thread_id_;
38 };
39 #else
40 // Do nothing in release mode.
41 class NonThreadSafe {
42 public:
43 NonThreadSafe() {}
44 ~NonThreadSafe() {}
46 bool CalledOnValidThread() const {
47 return true;
48 }
49 };
50 #endif // NDEBUG
52 #endif // BASE_NON_THREAD_SAFE_H__