Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(193)

Side by Side Diff: base/synchronization/cancellation_flag.h

Issue 2163023002: Unify usage of logging/assert macros in base/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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_SYNCHRONIZATION_CANCELLATION_FLAG_H_ 5 #ifndef BASE_SYNCHRONIZATION_CANCELLATION_FLAG_H_
6 #define BASE_SYNCHRONIZATION_CANCELLATION_FLAG_H_ 6 #define BASE_SYNCHRONIZATION_CANCELLATION_FLAG_H_
7 7
8 #include "base/atomicops.h" 8 #include "base/atomicops.h"
9 #include "base/base_export.h" 9 #include "base/base_export.h"
10 #include "base/logging.h"
10 #include "base/macros.h" 11 #include "base/macros.h"
11 #include "base/threading/platform_thread.h" 12 #include "base/threading/platform_thread.h"
12 13
13 namespace base { 14 namespace base {
14 15
15 // CancellationFlag allows one thread to cancel jobs executed on some worker 16 // CancellationFlag allows one thread to cancel jobs executed on some worker
16 // thread. Calling Set() from one thread and IsSet() from a number of threads 17 // thread. Calling Set() from one thread and IsSet() from a number of threads
17 // is thread-safe. 18 // is thread-safe.
18 // 19 //
19 // This class IS NOT intended for synchronization between threads. 20 // This class IS NOT intended for synchronization between threads.
20 class BASE_EXPORT CancellationFlag { 21 class BASE_EXPORT CancellationFlag {
21 public: 22 public:
22 CancellationFlag() : flag_(false) { 23 CancellationFlag() : flag_(false) {
23 #if !defined(NDEBUG) 24 #if DCHECK_IS_ON()
24 set_on_ = PlatformThread::CurrentId(); 25 set_on_ = PlatformThread::CurrentId();
25 #endif 26 #endif
26 } 27 }
27 ~CancellationFlag() {} 28 ~CancellationFlag() {}
28 29
29 // Set the flag. May only be called on the thread which owns the object. 30 // Set the flag. May only be called on the thread which owns the object.
30 void Set(); 31 void Set();
31 bool IsSet() const; // Returns true iff the flag was set. 32 bool IsSet() const; // Returns true iff the flag was set.
32 33
33 // For subtle reasons that may be different on different architectures, 34 // For subtle reasons that may be different on different architectures,
34 // a different thread testing IsSet() may erroneously read 'true' after 35 // a different thread testing IsSet() may erroneously read 'true' after
35 // this method has been called. 36 // this method has been called.
36 void UnsafeResetForTesting(); 37 void UnsafeResetForTesting();
37 38
38 private: 39 private:
39 base::subtle::Atomic32 flag_; 40 base::subtle::Atomic32 flag_;
40 #if !defined(NDEBUG) 41 #if DCHECK_IS_ON()
41 PlatformThreadId set_on_; 42 PlatformThreadId set_on_;
42 #endif 43 #endif
43 44
44 DISALLOW_COPY_AND_ASSIGN(CancellationFlag); 45 DISALLOW_COPY_AND_ASSIGN(CancellationFlag);
45 }; 46 };
46 47
47 } // namespace base 48 } // namespace base
48 49
49 #endif // BASE_SYNCHRONIZATION_CANCELLATION_FLAG_H_ 50 #endif // BASE_SYNCHRONIZATION_CANCELLATION_FLAG_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698