openshot-audio  0.1.6
Public Types | Public Member Functions | List of all members
SpinLock Class Reference

#include <juce_SpinLock.h>

Public Types

typedef GenericScopedLock
< SpinLock
ScopedLockType
 
typedef GenericScopedUnlock
< SpinLock
ScopedUnlockType
 

Public Member Functions

 SpinLock () noexcept
 
 ~SpinLock () noexcept
 
void enter () const noexcept
 
bool tryEnter () const noexcept
 
void exit () const noexcept
 

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 it 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

Member Typedef Documentation

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

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

Constructor & Destructor Documentation

SpinLock::SpinLock ( )
inlinenoexcept
SpinLock::~SpinLock ( )
inlinenoexcept

Member Function Documentation

void 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.

void SpinLock::exit ( ) const
inlinenoexcept

Releases the lock.

bool SpinLock::tryEnter ( ) const
inlinenoexcept

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


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