LLVM
8.0.1
Main Page
Related Pages
Modules
+
Namespaces
Namespace List
+
Namespace Members
+
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
+
Functions
_
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
r
s
t
u
v
w
x
z
+
Variables
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
+
Typedefs
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
r
s
t
u
v
w
z
+
Enumerations
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
+
Enumerator
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
+
Classes
Class List
Class Index
Class Hierarchy
+
Class Members
+
All
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
+
Functions
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
+
Variables
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
+
Typedefs
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
x
y
+
Enumerations
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
+
Enumerator
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
+
Related Functions
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
r
s
t
v
w
y
+
Files
File List
+
File Members
+
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
+
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
~
+
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
+
Typedefs
_
a
b
c
d
e
f
g
h
i
l
m
o
p
r
s
t
u
v
+
Enumerations
_
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
r
s
t
u
v
w
x
+
Enumerator
_
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
r
s
t
u
v
+
Macros
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Examples
include
llvm
Support
MutexGuard.h
Go to the documentation of this file.
1
//===-- Support/MutexGuard.h - Acquire/Release Mutex In Scope ---*- C++ -*-===//
2
//
3
// The LLVM Compiler Infrastructure
4
//
5
// This file is distributed under the University of Illinois Open Source
6
// License. See LICENSE.TXT for details.
7
//
8
//===----------------------------------------------------------------------===//
9
//
10
// This file defines a guard for a block of code that ensures a Mutex is locked
11
// upon construction and released upon destruction.
12
//
13
//===----------------------------------------------------------------------===//
14
15
#ifndef LLVM_SUPPORT_MUTEXGUARD_H
16
#define LLVM_SUPPORT_MUTEXGUARD_H
17
18
#include "
llvm/Support/Mutex.h
"
19
20
namespace
llvm
{
21
/// Instances of this class acquire a given Mutex Lock when constructed and
22
/// hold that lock until destruction. The intention is to instantiate one of
23
/// these on the stack at the top of some scope to be assured that C++
24
/// destruction of the object will always release the Mutex and thus avoid
25
/// a host of nasty multi-threading problems in the face of exceptions, etc.
26
/// Guard a section of code with a Mutex.
27
class
MutexGuard
{
28
sys::Mutex
&M;
29
MutexGuard
(
const
MutexGuard
&) =
delete
;
30
void
operator=(
const
MutexGuard
&) =
delete
;
31
public
:
32
MutexGuard
(
sys::Mutex
&m) : M(m) { M.
lock
(); }
33
~MutexGuard
() { M.
unlock
(); }
34
/// holds - Returns true if this locker instance holds the specified lock.
35
/// This is mostly used in assertions to validate that the correct mutex
36
/// is held.
37
bool
holds
(
const
sys::Mutex
& lock)
const
{
return
&M == &lock; }
38
};
39
}
40
41
#endif // LLVM_SUPPORT_MUTEXGUARD_H
llvm
This class represents lattice values for constants.
Definition:
AllocatorList.h:24
llvm::sys::SmartMutex< false >
llvm::MutexGuard::~MutexGuard
~MutexGuard()
Definition:
MutexGuard.h:33
llvm::MutexGuard::MutexGuard
MutexGuard(sys::Mutex &m)
Definition:
MutexGuard.h:32
llvm::MutexGuard
Instances of this class acquire a given Mutex Lock when constructed and hold that lock until destruct...
Definition:
MutexGuard.h:27
llvm::sys::SmartMutex::unlock
bool unlock()
Definition:
Mutex.h:113
llvm::MutexGuard::holds
bool holds(const sys::Mutex &lock) const
holds - Returns true if this locker instance holds the specified lock.
Definition:
MutexGuard.h:37
Mutex.h
llvm::sys::SmartMutex::lock
bool lock()
Definition:
Mutex.h:100
Generated on Sun Dec 20 2020 13:53:36 for LLVM by
1.8.13