acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
pmutex_lock.h
1//
2// Created by camilo on 13/02/2021. <3TBS_!!
3//
4#pragma once
5
6
7class pmutex_lock
8{
9public:
10
11
12 pthread_mutex_t * m_pmutex;
13
14 bool m_bLock;
15
16
17 pmutex_lock(pthread_mutex_t * pmutex, bool bStartLocked = true) :
18 m_pmutex(pmutex),
19 m_bLock(false)
20 {
21
22 if(bStartLocked)
23 {
24
25 lock();
26
27 }
28
29 }
30
31
32 ~pmutex_lock()
33 {
34
35 unlock();
36
37 }
38
39
40 void lock()
41 {
42
43 if(::is_null(m_pmutex))
44 {
45
46 return;
47
48 }
49
50 pthread_mutex_lock(m_pmutex);
51
52 m_bLock = true;
53
54 }
55
56
57 void unlock()
58 {
59
60 if(::is_null(m_pmutex))
61 {
62
63 return;
64
65 }
66
67 if(m_bLock)
68 {
69
70 m_bLock = false;
71
72 pthread_mutex_unlock(m_pmutex);
73
74 }
75
76 }
77
78};
79
80
81