OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef BASE_THREADING_THREAD_CHECKER_H_ | 5 #ifndef BASE_THREADING_THREAD_CHECKER_H_ |
6 #define BASE_THREADING_THREAD_CHECKER_H_ | 6 #define BASE_THREADING_THREAD_CHECKER_H_ |
7 | 7 |
8 // Apart from debug builds, we also enable the thread checker in | 8 // Apart from debug builds, we also enable the thread checker in |
9 // builds with DCHECK_ALWAYS_ON so that trybots and waterfall bots | 9 // builds with DCHECK_ALWAYS_ON so that trybots and waterfall bots |
10 // with this define will get the same level of thread checking as | 10 // with this define will get the same level of thread checking as |
(...skipping 28 matching lines...) Expand all Loading... |
39 void DetachFromThread() {} | 39 void DetachFromThread() {} |
40 }; | 40 }; |
41 | 41 |
42 // ThreadChecker is a helper class used to help verify that some methods of a | 42 // ThreadChecker is a helper class used to help verify that some methods of a |
43 // class are called from the same thread. It provides identical functionality to | 43 // class are called from the same thread. It provides identical functionality to |
44 // base::NonThreadSafe, but it is meant to be held as a member variable, rather | 44 // base::NonThreadSafe, but it is meant to be held as a member variable, rather |
45 // than inherited from base::NonThreadSafe. | 45 // than inherited from base::NonThreadSafe. |
46 // | 46 // |
47 // While inheriting from base::NonThreadSafe may give a clear indication about | 47 // While inheriting from base::NonThreadSafe may give a clear indication about |
48 // the thread-safety of a class, it may also lead to violations of the style | 48 // the thread-safety of a class, it may also lead to violations of the style |
49 // guide with regard to multiple inheritence. The choice between having a | 49 // guide with regard to multiple inheritance. The choice between having a |
50 // ThreadChecker member and inheriting from base::NonThreadSafe should be based | 50 // ThreadChecker member and inheriting from base::NonThreadSafe should be based |
51 // on whether: | 51 // on whether: |
52 // - Derived classes need to know the thread they belong to, as opposed to | 52 // - Derived classes need to know the thread they belong to, as opposed to |
53 // having that functionality fully encapsulated in the base class. | 53 // having that functionality fully encapsulated in the base class. |
54 // - Derived classes should be able to reassign the base class to another | 54 // - Derived classes should be able to reassign the base class to another |
55 // thread, via DetachFromThread. | 55 // thread, via DetachFromThread. |
56 // | 56 // |
57 // If neither of these are true, then having a ThreadChecker member and calling | 57 // If neither of these are true, then having a ThreadChecker member and calling |
58 // CalledOnValidThread is the preferable solution. | 58 // CalledOnValidThread is the preferable solution. |
59 // | 59 // |
(...skipping 16 matching lines...) Expand all Loading... |
76 #else | 76 #else |
77 class ThreadChecker : public ThreadCheckerDoNothing { | 77 class ThreadChecker : public ThreadCheckerDoNothing { |
78 }; | 78 }; |
79 #endif // ENABLE_THREAD_CHECKER | 79 #endif // ENABLE_THREAD_CHECKER |
80 | 80 |
81 #undef ENABLE_THREAD_CHECKER | 81 #undef ENABLE_THREAD_CHECKER |
82 | 82 |
83 } // namespace base | 83 } // namespace base |
84 | 84 |
85 #endif // BASE_THREADING_THREAD_CHECKER_H_ | 85 #endif // BASE_THREADING_THREAD_CHECKER_H_ |
OLD | NEW |