BDS Public
Beam-lib  2.16.3
This is the Beam C++ class library.
BMutex.h
Go to the documentation of this file.
1 /*******************************************************************************
2  * BMutex.h BMutex Classes
3  * T.Barnaby, BEAM Ltd, 1/11/02
4  * Copyright (c) 2012 All Right Reserved, Beam Ltd, http://www.beam.ltd.uk
5  *******************************************************************************
6  */
7 #ifndef BMUTEX_H
8 #define BMUTEX_H 1
9 
10 #include <pthread.h>
11 
14 class BMutex {
15 public:
16  enum Type { Normal, Recursive };
17 
18  BMutex(Type type = Normal);
19  BMutex(const BMutex& mutex);
20  ~BMutex();
21 
22  int lock();
23  int timedLock(int timeoutUs);
24  int unlock();
25  int tryLock();
26 
27  BMutex& operator=(const BMutex& mutex);
28 private:
29  pthread_mutex_t omutex;
30 };
31 
32 class BMutexLock {
33 public:
34  BMutexLock(BMutex& lock, int doLock = 0) : olock(lock) { if(doLock) olock.lock(); }
35  ~BMutexLock() { olock.unlock(); }
36  int lock() { return olock.lock(); }
37  int unlock() { return olock.unlock(); }
38 private:
39  BMutex& olock;
40 };
41 #endif
Definition: BMutex.h:32
Definition: BMutex.h:16
int unlock()
Unlock the lock.
Definition: BMutex.cpp:96
BMutexLock(BMutex &lock, int doLock=0)
Definition: BMutex.h:34
int lock()
Definition: BMutex.h:36
int tryLock()
Test the lock.
Definition: BMutex.cpp:100
int lock()
Set lock, wait as necessary.
Definition: BMutex.cpp:83
BMutex & operator=(const BMutex &mutex)
Definition: BMutex.cpp:28
~BMutex()
Definition: BMutex.cpp:32
~BMutexLock()
Definition: BMutex.h:35
BMutex(Type type=Normal)
Definition: BMutex.cpp:10
Definition: BMutex.h:14
Type
Definition: BMutex.h:16
int timedLock(int timeoutUs)
Set lock, wait as necessary but timeout after given time.
Definition: BMutex.cpp:87
int unlock()
Definition: BMutex.h:37
Definition: BMutex.h:16