OpenThreads
OpenThreads
ScopedLock
Go to the documentation of this file.
1
/* -*-c++-*- OpenThreads library, Copyright (C) 2002 - 2007 The Open Thread Group
2
*
3
* This library is open source and may be redistributed and/or modified under
4
* the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
5
* (at your option) any later version. The full license is in LICENSE file
6
* included with this distribution, and on the openscenegraph.org website.
7
*
8
* This library is distributed in the hope that it will be useful,
9
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
* OpenSceneGraph Public License for more details.
12
*/
13
14
15
//
16
// ScopedLock and ReverseScopedLock templates
17
// ~~~~~~~
18
//
19
#ifndef _ScopedLock_
20
#define _ScopedLock_
21
22
namespace
OpenThreads
{
23
24
template
<
class
M>
class
ScopedLock
25
{
26
private
:
27
M& m_lock;
28
ScopedLock(
const
ScopedLock&);
// prevent copy
29
ScopedLock& operator=(
const
ScopedLock&);
// prevent assign
30
public
:
31
explicit
ScopedLock
(M& m):m_lock(m) {m_lock.lock();}
32
~ScopedLock
(){m_lock.unlock();}
33
};
34
35
template
<
class
M>
class
ReverseScopedLock
36
{
37
private
:
38
M& m_lock;
39
ReverseScopedLock(
const
ReverseScopedLock&);
// prevent copy
40
ReverseScopedLock& operator=(
const
ReverseScopedLock&);
// prevent assign
41
public
:
42
explicit
ReverseScopedLock
(M& m):m_lock(m) {m_lock.unlock();}
43
~ReverseScopedLock
(){m_lock.lock();}
44
};
45
46
47
template
<
class
M>
class
ScopedPointerLock
48
{
49
private
:
50
M* m_lock;
51
ScopedPointerLock(
const
ScopedPointerLock&);
// prevent copy
52
ScopedPointerLock& operator=(
const
ScopedPointerLock&);
// prevent assign
53
public
:
54
explicit
ScopedPointerLock
(M* m):m_lock(m) {
if
(m_lock) m_lock->lock();}
55
~ScopedPointerLock
(){
if
(m_lock) m_lock->unlock();}
56
};
57
58
template
<
class
M>
class
ReverseScopedPointerLock
59
{
60
private
:
61
M* m_lock;
62
ReverseScopedPointerLock(
const
ReverseScopedPointerLock&);
// prevent copy
63
ReverseScopedPointerLock& operator=(
const
ReverseScopedPointerLock&);
// prevent assign
64
public
:
65
explicit
ReverseScopedPointerLock
(M* m):m_lock(m) {
if
(m_lock) m_lock->unlock();}
66
~ReverseScopedPointerLock
(){
if
(m_lock) m_lock->lock();}
67
};
68
69
}
70
#endif
OpenThreads
Definition
Affinity:26
OpenThreads::ScopedLock::~ScopedLock
~ScopedLock()
Definition
ScopedLock:32
OpenThreads::ScopedLock::ScopedLock
ScopedLock(M &m)
Definition
ScopedLock:31
OpenThreads::ReverseScopedLock::ReverseScopedLock
ReverseScopedLock(M &m)
Definition
ScopedLock:42
OpenThreads::ReverseScopedLock::~ReverseScopedLock
~ReverseScopedLock()
Definition
ScopedLock:43
OpenThreads::ScopedPointerLock::ScopedPointerLock
ScopedPointerLock(M *m)
Definition
ScopedLock:54
OpenThreads::ScopedPointerLock::~ScopedPointerLock
~ScopedPointerLock()
Definition
ScopedLock:55
OpenThreads::ReverseScopedPointerLock::~ReverseScopedPointerLock
~ReverseScopedPointerLock()
Definition
ScopedLock:66
OpenThreads::ReverseScopedPointerLock::ReverseScopedPointerLock
ReverseScopedPointerLock(M *m)
Definition
ScopedLock:65
Generated at Sun Jul 20 2025 00:00:00 for the
OpenThreads
by
doxygen
1.14.0.