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

Side by Side Diff: webrtc/system_wrappers/include/rw_lock_wrapper.h

Issue 3004393002: Rename thread annotation macros to have RTC prefix for syncrhonization primitives. (Closed)
Patch Set: Created 3 years, 3 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
« no previous file with comments | « webrtc/rtc_base/thread_checker.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
11 #ifndef WEBRTC_SYSTEM_WRAPPERS_INCLUDE_RW_LOCK_WRAPPER_H_ 11 #ifndef WEBRTC_SYSTEM_WRAPPERS_INCLUDE_RW_LOCK_WRAPPER_H_
12 #define WEBRTC_SYSTEM_WRAPPERS_INCLUDE_RW_LOCK_WRAPPER_H_ 12 #define WEBRTC_SYSTEM_WRAPPERS_INCLUDE_RW_LOCK_WRAPPER_H_
13 13
14 #include "webrtc/rtc_base/thread_annotations.h" 14 #include "webrtc/rtc_base/thread_annotations.h"
15 15
16 // Note, Windows pre-Vista version of RW locks are not supported natively. For 16 // Note, Windows pre-Vista version of RW locks are not supported natively. For
17 // these OSs regular critical sections have been used to approximate RW lock 17 // these OSs regular critical sections have been used to approximate RW lock
18 // functionality and will therefore have worse performance. 18 // functionality and will therefore have worse performance.
19 19
20 namespace webrtc { 20 namespace webrtc {
21 21
22 class LOCKABLE RWLockWrapper { 22 class RTC_LOCKABLE RWLockWrapper {
23 public: 23 public:
24 static RWLockWrapper* CreateRWLock(); 24 static RWLockWrapper* CreateRWLock();
25 virtual ~RWLockWrapper() {} 25 virtual ~RWLockWrapper() {}
26 26
27 virtual void AcquireLockExclusive() EXCLUSIVE_LOCK_FUNCTION() = 0; 27 virtual void AcquireLockExclusive() RTC_EXCLUSIVE_LOCK_FUNCTION() = 0;
28 virtual void ReleaseLockExclusive() UNLOCK_FUNCTION() = 0; 28 virtual void ReleaseLockExclusive() RTC_UNLOCK_FUNCTION() = 0;
29 29
30 virtual void AcquireLockShared() SHARED_LOCK_FUNCTION() = 0; 30 virtual void AcquireLockShared() RTC_SHARED_LOCK_FUNCTION() = 0;
31 virtual void ReleaseLockShared() UNLOCK_FUNCTION() = 0; 31 virtual void ReleaseLockShared() RTC_UNLOCK_FUNCTION() = 0;
32 }; 32 };
33 33
34 // RAII extensions of the RW lock. Prevents Acquire/Release missmatches and 34 // RAII extensions of the RW lock. Prevents Acquire/Release missmatches and
35 // provides more compact locking syntax. 35 // provides more compact locking syntax.
36 class SCOPED_LOCKABLE ReadLockScoped { 36 class RTC_SCOPED_LOCKABLE ReadLockScoped {
37 public: 37 public:
38 ReadLockScoped(RWLockWrapper& rw_lock) SHARED_LOCK_FUNCTION(rw_lock) 38 ReadLockScoped(RWLockWrapper& rw_lock) RTC_SHARED_LOCK_FUNCTION(rw_lock)
39 : rw_lock_(rw_lock) { 39 : rw_lock_(rw_lock) {
40 rw_lock_.AcquireLockShared(); 40 rw_lock_.AcquireLockShared();
41 } 41 }
42 42
43 ~ReadLockScoped() UNLOCK_FUNCTION() { 43 ~ReadLockScoped() RTC_UNLOCK_FUNCTION() { rw_lock_.ReleaseLockShared(); }
44 rw_lock_.ReleaseLockShared();
45 }
46 44
47 private: 45 private:
48 RWLockWrapper& rw_lock_; 46 RWLockWrapper& rw_lock_;
49 }; 47 };
50 48
51 class SCOPED_LOCKABLE WriteLockScoped { 49 class RTC_SCOPED_LOCKABLE WriteLockScoped {
52 public: 50 public:
53 WriteLockScoped(RWLockWrapper& rw_lock) EXCLUSIVE_LOCK_FUNCTION(rw_lock) 51 WriteLockScoped(RWLockWrapper& rw_lock) RTC_EXCLUSIVE_LOCK_FUNCTION(rw_lock)
54 : rw_lock_(rw_lock) { 52 : rw_lock_(rw_lock) {
55 rw_lock_.AcquireLockExclusive(); 53 rw_lock_.AcquireLockExclusive();
56 } 54 }
57 55
58 ~WriteLockScoped() UNLOCK_FUNCTION() { 56 ~WriteLockScoped() RTC_UNLOCK_FUNCTION() { rw_lock_.ReleaseLockExclusive(); }
59 rw_lock_.ReleaseLockExclusive();
60 }
61 57
62 private: 58 private:
63 RWLockWrapper& rw_lock_; 59 RWLockWrapper& rw_lock_;
64 }; 60 };
65 61
66 } // namespace webrtc 62 } // namespace webrtc
67 63
68 #endif // WEBRTC_SYSTEM_WRAPPERS_INCLUDE_RW_LOCK_WRAPPER_H_ 64 #endif // WEBRTC_SYSTEM_WRAPPERS_INCLUDE_RW_LOCK_WRAPPER_H_
OLDNEW
« no previous file with comments | « webrtc/rtc_base/thread_checker.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698