blob: 20d4c0b0dd8e6b88c6c6ab3b2bce8d0a888a85f7 [file] [log] [blame]
Marc Slemko66949872006-07-15 01:52:39 +00001#if !defined(_concurrency_mutex_h_)
2#define _concurrency_mutex_h_ 1
3
4namespace facebook { namespace thrift { namespace concurrency {
5
Marc Slemko0e53ccd2006-07-17 23:51:05 +00006/** A simple mutex class
7
8 @author marc
9 @version $Id:$ */
10
Marc Slemko66949872006-07-15 01:52:39 +000011class Mutex {
12
13 public:
14
15 Mutex();
16
17 virtual ~Mutex() {}
18
19 virtual void lock() const;
20
21 virtual void unlock() const;
22
23 private:
24
25 class impl;
26
27 impl* _impl;
28};
29
30class MutexMonitor {
31 public:
32
33 MutexMonitor(const Mutex& value) : _mutex(value) {
34 _mutex.lock();
35 }
36
37 ~MutexMonitor() {
38 _mutex.unlock();
39 }
40
41 private:
42 const Mutex& _mutex;
43};
44
45
46}}} // facebook::thrift::concurrency
47
48#endif // !defined(_concurrency_mutex_h_)