libzypp
17.7.0
MutexLock.h
Go to the documentation of this file.
1
/*---------------------------------------------------------------------\
2
| ____ _ __ __ ___ |
3
| |__ / \ / / . \ . \ |
4
| / / \ V /| _/ _/ |
5
| / /__ | | | | | | |
6
| /_____||_| |_| |_| |
7
| |
8
\---------------------------------------------------------------------*/
12
#ifndef ZYPP_THREAD_MUTEXLOCK_H
13
#define ZYPP_THREAD_MUTEXLOCK_H
14
15
#include "
zypp/thread/Mutex.h
"
16
#include <cassert>
17
18
20
namespace
zypp
21
{
22
namespace
thread
24
{
25
26
27
// -------------------------------------------------------------
28
class
MutexLock
29
{
30
public
:
31
explicit
MutexLock
(
Mutex
&mutex,
bool
init_locked=
true
)
32
:
m_mutex
(&mutex)
33
,
m_locked
(false)
34
{
35
if
(init_locked)
36
lock
();
37
}
38
39
MutexLock
(
const
MutexLock
&ref)
40
:
m_mutex
( ref.
m_mutex
)
41
,
m_locked
(ref.
m_locked
)
42
{
43
ref.
m_locked
=
false
;
44
}
45
46
~MutexLock
()
47
{
48
try
49
{
50
if
(
m_locked
)
51
unlock
();
52
}
53
catch
( ... )
54
{
55
// don't let exceptions escape
56
}
57
}
58
59
void
lock
()
60
{
61
assert(
m_locked
==
false
);
62
m_mutex
->
lock
();
63
m_locked
=
true
;
64
}
65
66
void
unlock
()
67
{
68
assert(
m_locked
==
true
);
69
m_mutex
->
unlock
();
70
m_locked
=
false
;
71
}
72
73
bool
trylock
()
74
{
75
assert(
m_locked
==
false
);
76
m_locked
=
m_mutex
->
trylock
();
77
return
m_locked
;
78
}
79
80
bool
locked
()
81
{
82
return
m_locked
;
83
}
84
85
private
:
86
Mutex
*
m_mutex
;
87
mutable
bool
m_locked
;
88
//friend class Condition;
89
};
90
91
93
}
// namespace thread
96
}
// namespace zypp
98
99
#endif // ZYPP_THREAD_MUTEXLOCK_H
100
/*
101
** vim: set ts=2 sts=2 sw=2 ai et:
102
*/
zypp::thread::Mutex
A recursive Mutex.
Definition:
Mutex.h:35
zypp::thread::MutexLock::trylock
bool trylock()
Definition:
MutexLock.h:73
zypp::thread::Mutex::trylock
bool trylock()
Try to acquire ownership of this Mutex object.
Definition:
Mutex.cc:92
zypp::thread::MutexLock::MutexLock
MutexLock(Mutex &mutex, bool init_locked=true)
Definition:
MutexLock.h:31
zypp::thread::MutexLock::unlock
void unlock()
Definition:
MutexLock.h:66
zypp::thread::MutexLock::lock
void lock()
Definition:
MutexLock.h:59
zypp::thread::MutexLock::m_locked
bool m_locked
Definition:
MutexLock.h:87
zypp::thread::MutexLock
Definition:
MutexLock.h:28
zypp::thread::Mutex::lock
void lock()
Acquire ownership of this Mutex object.
Definition:
Mutex.cc:72
zypp
Easy-to use interface to the ZYPP dependency resolver.
Definition:
CodePitfalls.doc:1
Mutex.h
zypp::thread::Mutex::unlock
void unlock()
Release ownership of this Mutex object.
Definition:
Mutex.cc:82
zypp::thread::MutexLock::~MutexLock
~MutexLock()
Definition:
MutexLock.h:46
zypp::thread::MutexLock::m_mutex
Mutex * m_mutex
Definition:
MutexLock.h:86
zypp::thread::MutexLock::locked
bool locked()
Definition:
MutexLock.h:80
zypp::thread::MutexLock::MutexLock
MutexLock(const MutexLock &ref)
Definition:
MutexLock.h:39
zypp
thread
MutexLock.h
Generated by
1.8.17