-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmutex_lock.h
69 lines (56 loc) · 910 Bytes
/
mutex_lock.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
68
69
#pragma once
class CMutexLock
{
public:
CMutexLock();
~CMutexLock();
void lock();
void unlock();
void* cs();
private:
CMutexLock(const CMutexLock&);
CMutexLock& operator=(const CMutexLock&);
struct Internal;
Internal *m_internal;
};
class CMutexLockGuard
{
public:
explicit CMutexLockGuard(CMutexLock &mutex)
: m_mutex(mutex)
{
m_mutex.lock();
}
~CMutexLockGuard()
{
m_mutex.unlock();
}
private:
CMutexLockGuard(const CMutexLockGuard&);
CMutexLockGuard operator=(const CMutexLockGuard&);
CMutexLock& m_mutex;
};
class GlobalMutexLock
{
public:
GlobalMutexLock(const char* name);
~GlobalMutexLock();
void lock();
void unlock();
private:
void* m_handle;
};
class GlobalMutexLockGuard
{
public:
GlobalMutexLockGuard(GlobalMutexLock &mutex) : m_mutex(mutex)
{
m_mutex.lock();
}
~GlobalMutexLockGuard()
{
m_mutex.unlock();
}
private:
GlobalMutexLock &m_mutex;
};