|
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 |
A re-entrant mutex. More...
#include "juce_CriticalSection.h"
Public Types | |
| using | ScopedLockType = GenericScopedLock< CriticalSection > |
| Provides the type of scoped lock to use with a CriticalSection. | |
| using | ScopedUnlockType = GenericScopedUnlock< CriticalSection > |
| Provides the type of scoped unlocker to use with a CriticalSection. | |
| using | ScopedTryLockType = GenericScopedTryLock< CriticalSection > |
| Provides the type of scoped try-locker to use with a CriticalSection. | |
Public Member Functions | |
| CriticalSection () noexcept | |
| Creates a CriticalSection object. | |
| ~CriticalSection () noexcept | |
| Destructor. | |
| void | enter () const noexcept |
| Acquires the lock. | |
| bool | tryEnter () const noexcept |
| Attempts to lock this critical section without blocking. | |
| void | exit () const noexcept |
| Releases the lock. | |
A re-entrant mutex.
A CriticalSection acts as a re-entrant mutex object. The best way to lock and unlock one of these is by using RAII in the form of a local ScopedLock object - have a look through the codebase for many examples of how to do this.
In almost all cases you'll want to declare your CriticalSection as a member variable. Occasionally you may want to declare one as a static variable, but in that case the usual C++ static object order-of-construction warnings should be heeded.
@tags{Core}
Definition at line 42 of file juce_CriticalSection.h.
Provides the type of scoped lock to use with a CriticalSection.
Definition at line 93 of file juce_CriticalSection.h.
Provides the type of scoped try-locker to use with a CriticalSection.
Definition at line 99 of file juce_CriticalSection.h.
Provides the type of scoped unlocker to use with a CriticalSection.
Definition at line 96 of file juce_CriticalSection.h.
|
noexcept |
Creates a CriticalSection object.
Definition at line 26 of file juce_SharedCode_posix.h.
|
noexcept |
Destructor.
If the critical section is deleted whilst locked, any subsequent behaviour is unpredictable.
Definition at line 38 of file juce_SharedCode_posix.h.
|
noexcept |
Acquires the lock.
If the lock is already held by the caller thread, the method returns immediately. If the lock is currently held by another thread, this will wait until it becomes free.
It's strongly recommended that you never call this method directly - instead use the ScopedLock class to manage the locking using an RAII pattern instead.
Definition at line 39 of file juce_SharedCode_posix.h.
|
noexcept |
Releases the lock.
If the caller thread hasn't got the lock, this can have unpredictable results.
If the enter() method has been called multiple times by the thread, each call must be matched by a call to exit() before other threads will be allowed to take over the lock.
Definition at line 41 of file juce_SharedCode_posix.h.
|
noexcept |
Attempts to lock this critical section without blocking.
This method behaves identically to CriticalSection::enter, except that the caller thread does not wait if the lock is currently held by another thread but returns false immediately.
Definition at line 40 of file juce_SharedCode_posix.h.