Lunchbox  1.8.0
Public Member Functions | List of all members
lunchbox::SpinLock Class Reference

A fast lock for uncontended memory access. More...

#include <spinLock.h>

+ Inheritance diagram for lunchbox::SpinLock:
+ Collaboration diagram for lunchbox::SpinLock:

Public Member Functions

 SpinLock ()
 Construct a new lock.
 ~SpinLock ()
 Destruct the lock.
void set ()
 Acquire the lock exclusively.
void unset ()
 Release an exclusive lock.
bool trySet ()
 Attempt to acquire the lock exclusively.
void setRead ()
 Acquire the lock shared with other readers.
void unsetRead ()
 Release a shared read lock.
bool trySetRead ()
 Attempt to acquire the lock shared with other readers.
bool isSet ()
 Test if the lock is set.
bool isSetWrite ()
 Test if the lock is set exclusively.
bool isSetRead ()
 Test if the lock is set shared.

Detailed Description

A fast lock for uncontended memory access.

If Thread::yield does not work like expected, priority inversion is possible. If used as a read-write lock, readers or writers will starve on high contention.

See Also
ScopedMutex

Definition at line 38 of file spinLock.h.

Constructor & Destructor Documentation

lunchbox::SpinLock::SpinLock ( )

Construct a new lock.

Version
1.0
lunchbox::SpinLock::~SpinLock ( )

Destruct the lock.

Version
1.0

Member Function Documentation

bool lunchbox::SpinLock::isSet ( )

Test if the lock is set.

Returns
true if the lock is set, false if it is not set.
Version
1.0
bool lunchbox::SpinLock::isSetRead ( )

Test if the lock is set shared.

Returns
true if the lock is set, false if it is not set.
Version
1.1.2
bool lunchbox::SpinLock::isSetWrite ( )

Test if the lock is set exclusively.

Returns
true if the lock is set, false if it is not set.
Version
1.1.2
void lunchbox::SpinLock::set ( )

Acquire the lock exclusively.

Version
1.0
void lunchbox::SpinLock::setRead ( )

Acquire the lock shared with other readers.

Version
1.1.2
bool lunchbox::SpinLock::trySet ( )

Attempt to acquire the lock exclusively.

Returns
true if the lock was set, false if it was not set.
Version
1.0
bool lunchbox::SpinLock::trySetRead ( )

Attempt to acquire the lock shared with other readers.

Returns
true if the lock was set, false if it was not set.
Version
1.1.2
void lunchbox::SpinLock::unset ( )

Release an exclusive lock.

Version
1.0
void lunchbox::SpinLock::unsetRead ( )

Release a shared read lock.

Version
1.1.2

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