Loading...
Searching...
No Matches
juce::SpinLock Class Reference

## Detailed Description

A simple spin-lock class that can be used as a simple, low-overhead mutex for uncontended situations.

Note that unlike a CriticalSection, this type of lock is not re-entrant, and may be less efficient when used in a highly contended situation, but it's very small and requires almost no initialisation. It's most appropriate for simple situations where you're only going to hold the lock for a very brief time.

See also
  CriticalSection

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

- juce_core/threads/juce_SpinLock.h

## Public Types

using | ScopedLockType = GenericScopedLock<SpinLock>
| Provides the type of scoped lock to use for locking a SpinLock.
using | ScopedUnlockType = GenericScopedUnlock<SpinLock>
| Provides the type of scoped unlocker to use with a SpinLock.
using | ScopedTryLockType = GenericScopedTryLock<SpinLock>
| Provides the type of scoped try-lock to use for locking a SpinLock.

## Public Member Functions

| SpinLock ()=default
| ~SpinLock ()=default
void | enter () const noexcept
| Acquires the lock.
bool | tryEnter () const noexcept
| Attempts to acquire the lock, returning true if this was successful.
void | exit () const noexcept
| Releases the lock.

## Member Typedef Documentation

## ScopedLockType

using juce::SpinLock::ScopedLockType = GenericScopedLock<SpinLock>

Provides the type of scoped lock to use for locking a SpinLock.

## ScopedUnlockType

using juce::SpinLock::ScopedUnlockType = GenericScopedUnlock<SpinLock>

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

## ScopedTryLockType

using juce::SpinLock::ScopedTryLockType = GenericScopedTryLock<SpinLock>

Provides the type of scoped try-lock to use for locking a SpinLock.

## Constructors and Destructors

## SpinLock()

juce::SpinLock::SpinLock | ( |  | ) |

inline default

## ~SpinLock()

juce::SpinLock::~SpinLock | ( |  | ) |

inline default

## Member Functions

## enter()

void juce::SpinLock::enter | ( |  | ) | const

noexcept

Acquires the lock.

This will block until the lock has been successfully acquired by this thread. Note that a SpinLock is NOT re-entrant, and is not smart enough to know whether the caller thread already has the lock - so if a thread tries to acquire a lock that it already holds, this method will never return!

It's strongly recommended that you never call this method directly - instead use the ScopedLockType class to manage the locking using an RAII pattern instead.

## tryEnter()

bool juce::SpinLock::tryEnter | ( |  | ) | const

inline noexcept

Attempts to acquire the lock, returning true if this was successful.

References tryEnter().

Referenced by tryEnter().

## exit()

void juce::SpinLock::exit | ( |  | ) | const

inline noexcept

Releases the lock.

References jassert.

### Purchase

Get JUCE

### Discover

What's New in JUCE Features

### Learn

Documentaion Tutorials Made with JUCE Resources

### Support

JUCE Forum Newsletter Archive

### About

Contact Us JUCE Legal JUCE Licensing FAQ

### Events

Audio Developer Conference
© Raw Material Software Limited