-
Notifications
You must be signed in to change notification settings - Fork 1
/
Mutex.h
67 lines (59 loc) · 2.42 KB
/
Mutex.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <pthread.h>
#ifndef mutex_h
#define mutex_h
//-----------------------------------------------------------------------------------------
// Mutex class definition and implementation.
// Works as a wrapper around standard pthread_mutex functions.
//-----------------------------------------------------------------------------------------
class Mutex
{
//-----------------------------------------------------------------------------------------
// Public members
//-----------------------------------------------------------------------------------------
public:
//-----------------------------------------------------------------------------------------
// Constructor (initializes mutex)
//-----------------------------------------------------------------------------------------
Mutex()
{
printf("Initializing mutex ...\n");
pthread_mutex_init(&mutex, NULL);
}
//-----------------------------------------------------------------------------------------
// Destructor
//-----------------------------------------------------------------------------------------
virtual ~Mutex()
{
printf("Destroying mutex ...\n");
int status = pthread_mutex_destroy(&mutex);
if (status != 0)
printf("Error destroying mutex");
}
//-----------------------------------------------------------------------------------------
// Locks mutex, returns 0 (success) or error code (failure).
//-----------------------------------------------------------------------------------------
int lock()
{
return pthread_mutex_lock(&mutex);
}
//-----------------------------------------------------------------------------------------
// Unlocks mutex, returns 0 (success) or error code (failure).
//-----------------------------------------------------------------------------------------
int unlock()
{
return pthread_mutex_unlock(&mutex);
}
//-----------------------------------------------------------------------------------------
// Tries to lock mutex, returns 0 (success) or error code (failure).
//-----------------------------------------------------------------------------------------
int trylock()
{
return pthread_mutex_lock(&mutex);
}
//-----------------------------------------------------------------------------------------
// Private members
//-----------------------------------------------------------------------------------------
private:
pthread_mutex_t mutex;
};
#endif