JUCE-7.0.12-0-g4f43011b96
JUCE-7.0.12-0-g4f43011b96
JUCE — C++ application framework with suport for VST, VST3, LV2 audio plug-ins
« « « Anklang Documentation
Loading...
Searching...
No Matches
juce_core
threads
juce_WaitableEvent.cpp
Go to the documentation of this file.
1
/*
2
==============================================================================
3
4
This file is part of the JUCE library.
5
Copyright (c) 2022 - Raw Material Software Limited
6
7
JUCE is an open source library subject to commercial or open-source
8
licensing.
9
10
The code included in this file is provided under the terms of the ISC license
11
http://www.isc.org/downloads/software-support-policy/isc-license. Permission
12
To use, copy, modify, and/or distribute this software for any purpose with or
13
without fee is hereby granted provided that the above copyright notice and
14
this permission notice appear in all copies.
15
16
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
17
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
18
DISCLAIMED.
19
20
==============================================================================
21
*/
22
23
namespace
juce
24
{
25
26
WaitableEvent::WaitableEvent
(
bool
manualReset) noexcept
27
: useManualReset (manualReset)
28
{
29
}
30
31
bool
WaitableEvent::wait
(
double
timeOutMilliseconds)
const
32
{
33
std::unique_lock<std::mutex>
lock (mutex);
34
35
if
(! triggered)
36
{
37
if
(timeOutMilliseconds < 0.0)
38
{
39
condition.
wait
(lock, [
this
] {
return
triggered ==
true
; });
40
}
41
else
42
{
43
if
(! condition.
wait_for
(lock,
std::chrono::duration<double, std::milli>
{ timeOutMilliseconds },
44
[
this
] { return triggered == true; }))
45
{
46
return
false
;
47
}
48
}
49
}
50
51
if
(! useManualReset)
52
reset
();
53
54
return
true
;
55
}
56
57
void
WaitableEvent::signal
()
const
58
{
59
std::lock_guard<std::mutex>
lock (mutex);
60
61
triggered =
true
;
62
condition.
notify_all
();
63
}
64
65
void
WaitableEvent::reset
()
const
66
{
67
triggered =
false
;
68
}
69
70
}
// namespace juce
juce::WaitableEvent::WaitableEvent
WaitableEvent(bool manualReset=false) noexcept
Creates a WaitableEvent object.
Definition
juce_WaitableEvent.cpp:26
juce::WaitableEvent::signal
void signal() const
Wakes up any threads that are currently waiting on this object.
Definition
juce_WaitableEvent.cpp:57
juce::WaitableEvent::reset
void reset() const
Resets the event to an unsignalled state.
Definition
juce_WaitableEvent.cpp:65
juce::WaitableEvent::wait
bool wait(double timeOutMilliseconds=-1.0) const
Suspends the calling thread until the event has been signalled.
Definition
juce_WaitableEvent.cpp:31
std::chrono::duration
std::lock_guard
juce
JUCE Namespace.
Definition
juce_AudioPlayHead.cpp:24
std::condition_variable::notify_all
T notify_all(T... args)
std::unique_lock
std::condition_variable::wait_for
T wait_for(T... args)
std::condition_variable::wait
T wait(T... args)
« « « Anklang Documentation