Open Lighting Architecture
Latest Git
include
ola
thread
Mutex.h
1
/*
2
* This library is free software; you can redistribute it and/or
3
* modify it under the terms of the GNU Lesser General Public
4
* License as published by the Free Software Foundation; either
5
* version 2.1 of the License, or (at your option) any later version.
6
*
7
* This library is distributed in the hope that it will be useful,
8
* but WITHOUT ANY WARRANTY; without even the implied warranty of
9
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
10
* Lesser General Public License for more details.
11
*
12
* You should have received a copy of the GNU Lesser General Public
13
* License along with this library; if not, write to the Free Software
14
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
15
*
16
* Mutex.h
17
* A thread object.
18
* Copyright (C) 2010 Simon Newton
19
*/
20
21
#ifndef INCLUDE_OLA_THREAD_MUTEX_H_
22
#define INCLUDE_OLA_THREAD_MUTEX_H_
23
24
#ifdef _WIN32
25
// On MinGW, pthread.h pulls in Windows.h, which in turn pollutes the global
26
// namespace. We define VC_EXTRALEAN and WIN32_LEAN_AND_MEAN to reduce this.
27
#define VC_EXTRALEAN
28
#define WIN32_LEAN_AND_MEAN
29
#endif // _WIN32
30
#include <pthread.h>
31
#include <ola/Clock.h>
32
#include <
ola/base/Macro.h
>
33
34
namespace
ola
{
35
namespace
thread {
36
37
41
class
Mutex
{
42
public
:
43
friend
class
ConditionVariable
;
44
45
Mutex
();
46
~Mutex
();
47
48
void
Lock
();
49
bool
TryLock
();
50
void
Unlock
();
51
52
private
:
53
pthread_mutex_t m_mutex;
54
55
DISALLOW_COPY_AND_ASSIGN
(
Mutex
);
56
};
57
58
63
class
MutexLocker
{
64
public
:
65
explicit
MutexLocker
(
Mutex
*mutex);
66
~
MutexLocker
();
67
68
void
Release();
69
70
private
:
71
Mutex
*m_mutex;
72
bool
m_requires_unlock;
73
74
DISALLOW_COPY_AND_ASSIGN
(
MutexLocker
);
75
};
76
77
81
class
ConditionVariable
{
82
public
:
83
ConditionVariable
();
84
~
ConditionVariable
();
85
86
void
Wait(
Mutex
*mutex);
87
bool
TimedWait(
Mutex
*mutex,
const
ola::TimeStamp
&wake_up_time);
88
89
void
Signal();
90
void
Broadcast();
91
92
private
:
93
pthread_cond_t m_condition;
94
95
DISALLOW_COPY_AND_ASSIGN
(
ConditionVariable
);
96
};
97
}
// namespace thread
98
}
// namespace ola
99
#endif // INCLUDE_OLA_THREAD_MUTEX_H_
DISALLOW_COPY_AND_ASSIGN
#define DISALLOW_COPY_AND_ASSIGN(TypeName)
Creates dummy copy constructor and assignment operator declarations.
Definition:
Macro.h:44
ola::thread::Mutex::Lock
void Lock()
Definition:
Mutex.cpp:46
ola::thread::Mutex::Unlock
void Unlock()
Definition:
Mutex.cpp:64
ola::thread::MutexLocker
Definition:
Mutex.h:63
ola::thread::Mutex::TryLock
bool TryLock()
Definition:
Mutex.cpp:55
Macro.h
Helper macros.
ola::thread::Mutex::~Mutex
~Mutex()
Definition:
Mutex.cpp:38
ola
The namespace containing all OLA symbols.
Definition:
Credentials.cpp:44
ola::TimeStamp
Represents a point in time with microsecond accuracy.
Definition:
Clock.h:191
ola::thread::Mutex::Mutex
Mutex()
Definition:
Mutex.cpp:30
ola::thread::Mutex
Definition:
Mutex.h:41
ola::thread::ConditionVariable
Definition:
Mutex.h:81
Generated on Mon Jan 2 2023 23:40:35 for Open Lighting Architecture by
1.8.13