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

Side by Side Diff: src/base/platform/mutex.h

Issue 526223002: Use Chrome compatible naming for compiler specifics. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: mips Created 6 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 | Annotate | Revision Log
« no previous file with comments | « src/base/platform/elapsed-timer.h ('k') | src/base/platform/platform-unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 the V8 project 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 V8_BASE_PLATFORM_MUTEX_H_ 5 #ifndef V8_BASE_PLATFORM_MUTEX_H_
6 #define V8_BASE_PLATFORM_MUTEX_H_ 6 #define V8_BASE_PLATFORM_MUTEX_H_
7 7
8 #include "src/base/lazy-instance.h" 8 #include "src/base/lazy-instance.h"
9 #if V8_OS_WIN 9 #if V8_OS_WIN
10 #include "src/base/win32-headers.h" 10 #include "src/base/win32-headers.h"
(...skipping 15 matching lines...) Expand all
26 // exclusive, non-recursive ownership semantics: 26 // exclusive, non-recursive ownership semantics:
27 // - A calling thread owns a mutex from the time that it successfully calls 27 // - A calling thread owns a mutex from the time that it successfully calls
28 // either |Lock()| or |TryLock()| until it calls |Unlock()|. 28 // either |Lock()| or |TryLock()| until it calls |Unlock()|.
29 // - When a thread owns a mutex, all other threads will block (for calls to 29 // - When a thread owns a mutex, all other threads will block (for calls to
30 // |Lock()|) or receive a |false| return value (for |TryLock()|) if they 30 // |Lock()|) or receive a |false| return value (for |TryLock()|) if they
31 // attempt to claim ownership of the mutex. 31 // attempt to claim ownership of the mutex.
32 // A calling thread must not own the mutex prior to calling |Lock()| or 32 // A calling thread must not own the mutex prior to calling |Lock()| or
33 // |TryLock()|. The behavior of a program is undefined if a mutex is destroyed 33 // |TryLock()|. The behavior of a program is undefined if a mutex is destroyed
34 // while still owned by some thread. The Mutex class is non-copyable. 34 // while still owned by some thread. The Mutex class is non-copyable.
35 35
36 class Mutex V8_FINAL { 36 class Mutex FINAL {
37 public: 37 public:
38 Mutex(); 38 Mutex();
39 ~Mutex(); 39 ~Mutex();
40 40
41 // Locks the given mutex. If the mutex is currently unlocked, it becomes 41 // Locks the given mutex. If the mutex is currently unlocked, it becomes
42 // locked and owned by the calling thread, and immediately. If the mutex 42 // locked and owned by the calling thread, and immediately. If the mutex
43 // is already locked by another thread, suspends the calling thread until 43 // is already locked by another thread, suspends the calling thread until
44 // the mutex is unlocked. 44 // the mutex is unlocked.
45 void Lock(); 45 void Lock();
46 46
47 // Unlocks the given mutex. The mutex is assumed to be locked and owned by 47 // Unlocks the given mutex. The mutex is assumed to be locked and owned by
48 // the calling thread on entrance. 48 // the calling thread on entrance.
49 void Unlock(); 49 void Unlock();
50 50
51 // Tries to lock the given mutex. Returns whether the mutex was 51 // Tries to lock the given mutex. Returns whether the mutex was
52 // successfully locked. 52 // successfully locked.
53 bool TryLock() V8_WARN_UNUSED_RESULT; 53 bool TryLock() WARN_UNUSED_RESULT;
54 54
55 // The implementation-defined native handle type. 55 // The implementation-defined native handle type.
56 #if V8_OS_POSIX 56 #if V8_OS_POSIX
57 typedef pthread_mutex_t NativeHandle; 57 typedef pthread_mutex_t NativeHandle;
58 #elif V8_OS_WIN 58 #elif V8_OS_WIN
59 typedef CRITICAL_SECTION NativeHandle; 59 typedef CRITICAL_SECTION NativeHandle;
60 #endif 60 #endif
61 61
62 NativeHandle& native_handle() { 62 NativeHandle& native_handle() {
63 return native_handle_; 63 return native_handle_;
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 // calls to |Unlock()|. 120 // calls to |Unlock()|.
121 // - When a thread owns a recursive mutex, all other threads will block (for 121 // - When a thread owns a recursive mutex, all other threads will block (for
122 // calls to |Lock()|) or receive a |false| return value (for |TryLock()|) if 122 // calls to |Lock()|) or receive a |false| return value (for |TryLock()|) if
123 // they attempt to claim ownership of the recursive mutex. 123 // they attempt to claim ownership of the recursive mutex.
124 // - The maximum number of times that a recursive mutex may be locked is 124 // - The maximum number of times that a recursive mutex may be locked is
125 // unspecified, but after that number is reached, calls to |Lock()| will 125 // unspecified, but after that number is reached, calls to |Lock()| will
126 // probably abort the process and calls to |TryLock()| return false. 126 // probably abort the process and calls to |TryLock()| return false.
127 // The behavior of a program is undefined if a recursive mutex is destroyed 127 // The behavior of a program is undefined if a recursive mutex is destroyed
128 // while still owned by some thread. The RecursiveMutex class is non-copyable. 128 // while still owned by some thread. The RecursiveMutex class is non-copyable.
129 129
130 class RecursiveMutex V8_FINAL { 130 class RecursiveMutex FINAL {
131 public: 131 public:
132 RecursiveMutex(); 132 RecursiveMutex();
133 ~RecursiveMutex(); 133 ~RecursiveMutex();
134 134
135 // Locks the mutex. If another thread has already locked the mutex, a call to 135 // Locks the mutex. If another thread has already locked the mutex, a call to
136 // |Lock()| will block execution until the lock is acquired. A thread may call 136 // |Lock()| will block execution until the lock is acquired. A thread may call
137 // |Lock()| on a recursive mutex repeatedly. Ownership will only be released 137 // |Lock()| on a recursive mutex repeatedly. Ownership will only be released
138 // after the thread makes a matching number of calls to |Unlock()|. 138 // after the thread makes a matching number of calls to |Unlock()|.
139 // The behavior is undefined if the mutex is not unlocked before being 139 // The behavior is undefined if the mutex is not unlocked before being
140 // destroyed, i.e. some thread still owns it. 140 // destroyed, i.e. some thread still owns it.
141 void Lock(); 141 void Lock();
142 142
143 // Unlocks the mutex if its level of ownership is 1 (there was exactly one 143 // Unlocks the mutex if its level of ownership is 1 (there was exactly one
144 // more call to |Lock()| than there were calls to unlock() made by this 144 // more call to |Lock()| than there were calls to unlock() made by this
145 // thread), reduces the level of ownership by 1 otherwise. The mutex must be 145 // thread), reduces the level of ownership by 1 otherwise. The mutex must be
146 // locked by the current thread of execution, otherwise, the behavior is 146 // locked by the current thread of execution, otherwise, the behavior is
147 // undefined. 147 // undefined.
148 void Unlock(); 148 void Unlock();
149 149
150 // Tries to lock the given mutex. Returns whether the mutex was 150 // Tries to lock the given mutex. Returns whether the mutex was
151 // successfully locked. 151 // successfully locked.
152 bool TryLock() V8_WARN_UNUSED_RESULT; 152 bool TryLock() WARN_UNUSED_RESULT;
153 153
154 // The implementation-defined native handle type. 154 // The implementation-defined native handle type.
155 typedef Mutex::NativeHandle NativeHandle; 155 typedef Mutex::NativeHandle NativeHandle;
156 156
157 NativeHandle& native_handle() { 157 NativeHandle& native_handle() {
158 return native_handle_; 158 return native_handle_;
159 } 159 }
160 const NativeHandle& native_handle() const { 160 const NativeHandle& native_handle() const {
161 return native_handle_; 161 return native_handle_;
162 } 162 }
(...skipping 29 matching lines...) Expand all
192 // LockGuard 192 // LockGuard
193 // 193 //
194 // This class is a mutex wrapper that provides a convenient RAII-style mechanism 194 // This class is a mutex wrapper that provides a convenient RAII-style mechanism
195 // for owning a mutex for the duration of a scoped block. 195 // for owning a mutex for the duration of a scoped block.
196 // When a LockGuard object is created, it attempts to take ownership of the 196 // When a LockGuard object is created, it attempts to take ownership of the
197 // mutex it is given. When control leaves the scope in which the LockGuard 197 // mutex it is given. When control leaves the scope in which the LockGuard
198 // object was created, the LockGuard is destructed and the mutex is released. 198 // object was created, the LockGuard is destructed and the mutex is released.
199 // The LockGuard class is non-copyable. 199 // The LockGuard class is non-copyable.
200 200
201 template <typename Mutex> 201 template <typename Mutex>
202 class LockGuard V8_FINAL { 202 class LockGuard FINAL {
203 public: 203 public:
204 explicit LockGuard(Mutex* mutex) : mutex_(mutex) { mutex_->Lock(); } 204 explicit LockGuard(Mutex* mutex) : mutex_(mutex) { mutex_->Lock(); }
205 ~LockGuard() { mutex_->Unlock(); } 205 ~LockGuard() { mutex_->Unlock(); }
206 206
207 private: 207 private:
208 Mutex* mutex_; 208 Mutex* mutex_;
209 209
210 DISALLOW_COPY_AND_ASSIGN(LockGuard); 210 DISALLOW_COPY_AND_ASSIGN(LockGuard);
211 }; 211 };
212 212
213 } } // namespace v8::base 213 } } // namespace v8::base
214 214
215 #endif // V8_BASE_PLATFORM_MUTEX_H_ 215 #endif // V8_BASE_PLATFORM_MUTEX_H_
OLDNEW
« no previous file with comments | « src/base/platform/elapsed-timer.h ('k') | src/base/platform/platform-unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698