OpenShot Audio Library | OpenShotAudio 0.3.2

Loading...
Searching...
No Matches
Public Types | Public Member Functions | List of all members
juce::MessageManager::Lock Class Reference

`#include <juce_MessageManager.h>`

## Public Types
using | ScopedLockType = GenericScopedLock< Lock >
using | ScopedUnlockType = GenericScopedUnlock< Lock >
using | ScopedTryLockType = GenericScopedTryLock< Lock >

## Public Member Functions
| Lock ()
| ~Lock ()
void | enter () const noexcept
bool | tryEnter () const noexcept
void | exit () const noexcept
void | abort () const noexcept

## Detailed Description

A lock you can use to lock the message manager. You can use this class with the RAII-based ScopedLock classes.

Definition at line 204 of file juce_MessageManager.h.

## Member Typedef Documentation

## ◆ ScopedLockType

using juce::MessageManager::Lock::ScopedLockType = GenericScopedLock<Lock>

Provides the type of scoped lock to use with a CriticalSection.

Definition at line 293 of file juce_MessageManager.h.

## ◆ ScopedTryLockType

using juce::MessageManager::Lock::ScopedTryLockType = GenericScopedTryLock<Lock>

Provides the type of scoped try-locker to use with a CriticalSection.

Definition at line 299 of file juce_MessageManager.h.

## ◆ ScopedUnlockType

using juce::MessageManager::Lock::ScopedUnlockType = GenericScopedUnlock<Lock>

Provides the type of scoped unlocker to use with a CriticalSection.

Definition at line 296 of file juce_MessageManager.h.

## Constructor & Destructor Documentation

## ◆ Lock()

juce::MessageManager::Lock::Lock | ( |  | ) |

Creates a new critical section to exclusively access methods which can only be called when the message manager is locked.

Unlike CrititcalSection, multiple instances of this lock class provide exclusive access to a single resource - the MessageManager.

Definition at line 299 of file juce_MessageManager.cpp.

## ◆ ~Lock()

juce::MessageManager::Lock::~Lock | ( |  | ) |

Destructor.

Definition at line 300 of file juce_MessageManager.cpp.

## Member Function Documentation

## ◆ abort()

void juce::MessageManager::Lock::abort | ( |  | ) | const
| noexcept

Unblocks a thread which is waiting in tryEnter Call this method if you want to unblock a thread which is waiting for the MessageManager lock in tryEnter. This method does not have any effect on a thread waiting for a lock in enter.

See also
  tryEnter

Definition at line 396 of file juce_MessageManager.cpp.

## ◆ enter()

void juce::MessageManager::Lock::enter | ( |  | ) | const
| noexcept

Acquires the message manager lock.

If the caller thread already has exclusive access to the MessageManager, this method will return immediately. If another thread is currently using the MessageManager, this will wait until that thread releases the lock to the MessageManager.

This call will only exit if the lock was acquired by this thread. Calling abort while a thread is waiting for enter to finish, will have no effect.

See also
  exit, abort

Definition at line 301 of file juce_MessageManager.cpp.

## ◆ exit()

void juce::MessageManager::Lock::exit | ( |  | ) | const
| noexcept

Releases the message manager lock.

See also
  enter, ScopedLock

Definition at line 370 of file juce_MessageManager.cpp.

Referenced by juce::MessageManagerLock::~MessageManagerLock().

## ◆ tryEnter()

bool juce::MessageManager::Lock::tryEnter | ( |  | ) | const
| noexcept

Attempts to lock the message manager and exits if abort is called.

This method behaves identically to enter, except that it will abort waiting for the lock if the abort method is called.

Unlike other JUCE critical sections, this method will block waiting for the lock.

To ensure predictable behaviour, you should re-check your abort condition if tryEnter returns false.

This method can be used if you want to do some work while waiting for the MessageManagerLock:

void doWorkWhileWaitingForMessageManagerLock() { MessageManager::Lock::ScopedTryLockType mmLock (messageManagerLock);

while (! mmLock.isLocked()) { while (workQueue.size() > 0) { auto work = workQueue.pop(); doSomeWork (work); }

this will block until we either have the lock or there is work mmLock.retryLock(); }

we have the mmlock do some message manager stuff like resizing and painting components }

called from another thread void addWorkToDo (Work work) { queue.push (work); messageManagerLock.abort(); }

Returns
  false if waiting for a lock was aborted, true if the lock was acquired.

See also
  enter, abort, ScopedTryLock

Definition at line 302 of file juce_MessageManager.cpp.

The documentation for this class was generated from the following files:

- juce_MessageManager.h
- juce_MessageManager.cpp