libzypp
11.13.5
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
libzypp
Welcome to libzypp
Code Pitfalls - Frequently made mistakes
Code Snippets
Environment Variables
Testing for provided features.
Notes on revisions
Extending ZYpp: Plugins and Hooks
Services
Solver - Vendor protection
Writing and tunning testcases
Libzypp and threads
Todo List
Deprecated List
Modules
Namespaces
Classes
Files
File List
zypp
base
media
misc
parser
pool
repo
sat
solver
target
thread
Mutex.cc
Mutex.h
MutexException.h
MutexLock.h
Once.h
ui
url
ws
zypp_detail
APIConfig.h
Arch.cc
Arch.h
AutoDispose.h
Bit.h
ByteCount.cc
ByteCount.h
Callback.h
Capabilities.cc
Capabilities.h
Capability.cc
Capability.h
CapMatch.cc
CapMatch.h
Changelog.cc
Changelog.h
CheckSum.cc
CheckSum.h
CountryCode.cc
CountryCode.h
Date.cc
Date.h
Dep.cc
Dep.h
Digest.cc
Digest.h
DiskUsage.cc
DiskUsage.h
DiskUsageCounter.cc
DiskUsageCounter.h
DownloadMode.cc
DownloadMode.h
Edition.cc
Edition.h
ExternalProgram.cc
ExternalProgram.h
Fetcher.cc
Fetcher.h
FileChecker.cc
FileChecker.h
Filter.h
Glob.cc
Glob.h
HistoryLog.cc
HistoryLog.h
HistoryLogData.cc
HistoryLogData.h
IdString.cc
IdString.h
IdStringType.h
InstanceId.cc
InstanceId.h
KeyContext.h
KeyRing.cc
KeyRing.h
KVMap.h
LanguageCode.cc
LanguageCode.h
Locale.cc
Locale.h
Locks.cc
Locks.h
ManagedFile.h
MediaProducts.cc
MediaProducts.h
MediaSetAccess.cc
MediaSetAccess.h
Misc.h
OnMediaLocation.cc
OnMediaLocation.h
Package.cc
Package.h
PackageKeyword.h
Patch.cc
Patch.h
PathInfo.cc
PathInfo.h
Pathname.cc
Pathname.h
Pattern.cc
Pattern.h
PluginFrame.cc
PluginFrame.h
PluginFrameException.cc
PluginFrameException.h
PluginScript.cc
PluginScript.h
PluginScriptException.cc
PluginScriptException.h
PoolItem.cc
PoolItem.h
PoolItemBest.cc
PoolItemBest.h
PoolQuery.cc
PoolQuery.h
PoolQueryResult.cc
PoolQueryResult.h
PoolQueryUtil.tcc
ProblemSolution.cc
ProblemSolution.h
ProblemTypes.h
Product.cc
Product.h
ProgressData.cc
ProgressData.h
ProvideFilePolicy.cc
ProvideFilePolicy.h
PublicKey.cc
PublicKey.h
Range.cc
Range.h
Rel.cc
Rel.h
RelCompare.h
RepoInfo.cc
RepoInfo.h
RepoManager.cc
RepoManager.h
Repository.cc
Repository.h
RepoStatus.cc
RepoStatus.h
ResFilters.h
ResKind.cc
ResKind.h
ResObject.cc
ResObject.h
ResObjects.h
Resolvable.cc
Resolvable.h
Resolver.cc
Resolver.h
ResolverProblem.cc
ResolverProblem.h
ResPool.cc
ResPool.h
ResPoolProxy.cc
ResPoolProxy.h
ResStatus.cc
ResStatus.h
ResTraits.h
ServiceInfo.cc
ServiceInfo.h
Signature.cc
Signature.h
SrcPackage.cc
SrcPackage.h
SysContent.cc
SysContent.h
Target.cc
Target.h
TmpPath.cc
TmpPath.h
TriBool.h
Url.cc
Url.h
Vendor.h
VendorAttr.cc
VendorAttr.h
VendorSupportOptions.cc
VendorSupportOptions.h
ZConfig.cc
ZConfig.h
ZYpp.cc
ZYpp.h
ZYppCallbacks.h
ZYppCommit.h
ZYppCommitPolicy.cc
ZYppCommitPolicy.h
ZYppCommitResult.cc
ZYppCommitResult.h
ZYppFactory.cc
ZYppFactory.h
File Members
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
23
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
MutexLock.h
Generated by
1.8.1