SpinMutex Class Reference

#include <Pt/System/Mutex.h>

Spinmutex class. More...

Inherits NonCopyable.

Public Member Functions

 SpinMutex ()
 Default Constructor.
 ~SpinMutex ()
void lock ()
 Lock the mutex. More...
bool tryLock ()
 Tries to acquire a lock. More...
void unlock ()
 Unlocks the mutex.

Detailed Description

The most lightweight synchronisation object is the SpinMutex. It is usually implemented with a status variable that can be set to locked and unlocked and atomic operations to change and inspect the status. When lock() is called, the status is changed to Locked. Subsequent calls of lock() from other threads will block until the first thread has called unlock() and the state of the Spinlock has changed to Unlocked. Note that SpinMutexes are not recursive. When a lock() blocks a busy-wait happens, therefore a SpinMutex is only usable in cases where resources need to be locked for a very short time, but in these cases a higher performance can be achieved.

Member Function Documentation

void lock ( )

Locks the Spinlock. If the Spinlock is currently locked by another thread, the calling thread suspends until no other thread holds a lock on it. This happens performing a busy-wait. Spinlocks are not recursive locking it multiple times before unlocking it is undefined.

bool tryLock ( )

Immediately returns true if successful, or false if one or more other threads currently hold locks.