A mutex like construct that never makes a system call and uses CPU instructions instead. More...
#include <spinlock.h>
Public Member Functions | |
| SpinLock () | |
| Constructor, creates an unlocked mutex. | |
| ~SpinLock () | |
| Destructor. | |
| void | Lock () |
| Lock the SpinLock. More... | |
| void | lock () |
| Lock the SpinLock. More... | |
| bool | TryLock () |
| Try to lock the spinlock. More... | |
| void | Unlock () |
| Unlock the spinlock. More... | |
| void | unlock () |
| Unlock the spinlock. More... | |
A mutex like construct that never makes a system call and uses CPU instructions instead.
This should be used when delay is likely to be measured in CPUs cycles and almost certainly a short while. For pauses of unknown length use a Mutex so that the OS is informed it could schedule another thread.
This is compatible with the lock_guard class.
Definition at line 83 of file spinlock.h.
| void Mezzanine::Threading::SpinLock::Lock | ( | ) |
Lock the SpinLock.
The method will block the calling thread until a lock on the SpinLock can be obtained. The SpinLock remains locked until unlock() is called.
Definition at line 61 of file spinlock.cpp.
|
inline |
Lock the SpinLock.
The method will block the calling thread until a lock on the SpinLock can be obtained. The SpinLock remains locked until unlock() is called.
Definition at line 103 of file spinlock.h.
| bool Mezzanine::Threading::SpinLock::TryLock | ( | ) |
Try to lock the spinlock.
The method will try to lock the SpinLock. If it fails, the function will return immediately (non-blocking).
true if the lock was acquired, or false if the lock could not be acquired. Definition at line 67 of file spinlock.cpp.
| void Mezzanine::Threading::SpinLock::Unlock | ( | ) |
Unlock the spinlock.
If any threads are waiting for the lock on this mutex, one of them will be unblocked.
Definition at line 70 of file spinlock.cpp.
|
inline |
Unlock the spinlock.
If any threads are waiting for the lock on this mutex, one of them will be unblocked.
Definition at line 117 of file spinlock.h.
1.8.9.1. Thanks to the
Open Icon Library
for help with some of the icons.