Open Lighting Architecture
0.10.9
Loading...
Searching...
No Matches
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
Mutex
(
const
Mutex
&) =
delete
;
56
const
Mutex
&operator=(
const
Mutex
&) =
delete
;
57
};
58
59
64
class
MutexLocker
{
65
public
:
66
explicit
MutexLocker
(
Mutex
*mutex);
67
~MutexLocker
();
68
69
void
Release();
70
71
private
:
72
Mutex
*m_mutex;
73
bool
m_requires_unlock;
74
75
MutexLocker
(
const
MutexLocker
&) =
delete
;
76
const
MutexLocker
&operator=(
const
MutexLocker
&) =
delete
;
77
};
78
79
83
class
ConditionVariable
{
84
public
:
85
ConditionVariable
();
86
~ConditionVariable
();
87
88
void
Wait
(
Mutex
*mutex);
89
bool
TimedWait
(
Mutex
*mutex,
const
ola::TimeStamp
&wake_up_time);
90
91
void
Signal
();
92
void
Broadcast
();
93
94
private
:
95
pthread_cond_t m_condition;
96
97
ConditionVariable
(
const
ConditionVariable
&) =
delete
;
98
const
ConditionVariable
&operator=(
const
ConditionVariable
&) =
delete
;
99
};
100
}
// namespace thread
101
}
// namespace ola
102
#endif
// INCLUDE_OLA_THREAD_MUTEX_H_
Macro.h
Helper macros.
ola::TimeStamp
Definition
Clock.h:179
ola::thread::ConditionVariable
Definition
Mutex.h:83
ola::thread::ConditionVariable::~ConditionVariable
~ConditionVariable()
Definition
Mutex.cpp:103
ola::thread::ConditionVariable::Broadcast
void Broadcast()
Definition
Mutex.cpp:145
ola::thread::ConditionVariable::Signal
void Signal()
Definition
Mutex.cpp:137
ola::thread::ConditionVariable::TimedWait
bool TimedWait(Mutex *mutex, const ola::TimeStamp &wake_up_time)
Definition
Mutex.cpp:124
ola::thread::ConditionVariable::ConditionVariable
ConditionVariable()
Definition
Mutex.cpp:95
ola::thread::ConditionVariable::Wait
void Wait(Mutex *mutex)
Definition
Mutex.cpp:112
ola::thread::Mutex
Definition
Mutex.h:41
ola::thread::Mutex::Lock
void Lock()
Definition
Mutex.cpp:46
ola::thread::Mutex::Unlock
void Unlock()
Definition
Mutex.cpp:64
ola::thread::Mutex::~Mutex
~Mutex()
Definition
Mutex.cpp:38
ola::thread::Mutex::Mutex
Mutex()
Definition
Mutex.cpp:30
ola::thread::Mutex::TryLock
bool TryLock()
Definition
Mutex.cpp:55
ola::thread::MutexLocker
Definition
Mutex.h:64
ola::thread::MutexLocker::~MutexLocker
~MutexLocker()
Definition
Mutex.cpp:81
ola::thread::MutexLocker::MutexLocker
MutexLocker(Mutex *mutex)
Definition
Mutex.cpp:72
ola
The namespace containing all OLA symbols.
Definition
Credentials.cpp:44
Generated on Sat Aug 24 2024 09:00:45 for Open Lighting Architecture by
1.12.0