LLVM
8.0.1
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