Geogram Version 1.8.5
A programming library of geometric algorithms
|
An array of light-weight synchronisation primitives (spinlocks). More...
#include <geogram/basic/thread_sync.h>
Public Types | |
typedef Numeric::uint32 | word_t |
Internal representation of SpinLockArray elements. | |
Public Member Functions | |
SpinLockArray () | |
Constructs a new SpinLockArray of size 0. | |
SpinLockArray (index_t size_in) | |
Constructs a new SpinLockArray of size size_in . | |
void | resize (index_t size_in) |
Resizes a SpinLockArray. | |
index_t | size () const |
Gets the number of spinlocks in this array. | |
void | clear () |
Resets size to 0 and clears all the memory. | |
void | acquire_spinlock (index_t i) |
Acquires a spinlock at a given index. | |
void | release_spinlock (index_t i) |
Releases a spinlock at a given index. | |
An array of light-weight synchronisation primitives (spinlocks).
In this implementation, storage is optimized so that a single bit per spinlock is used.
Definition at line 513 of file thread_sync.h.
Internal representation of SpinLockArray elements.
Each word_t represents 32 spinlocks.
Definition at line 519 of file thread_sync.h.
|
inline |
Constructs a new SpinLockArray of size 0.
Definition at line 524 of file thread_sync.h.
|
inline |
Constructs a new SpinLockArray of size size_in
.
[in] | size_in | number of spinlocks in the array. |
Definition at line 531 of file thread_sync.h.
|
inline |
Acquires a spinlock at a given index.
Loops until spinlock at index i
is available then reserve it.
[in] | i | index of the spinlock |
Definition at line 568 of file thread_sync.h.
|
inline |
Resets size to 0 and clears all the memory.
Definition at line 558 of file thread_sync.h.
|
inline |
Releases a spinlock at a given index.
Makes spinlock at index i
available to other threads.
[in] | i | index of the spinlock |
Definition at line 585 of file thread_sync.h.
|
inline |
Resizes a SpinLockArray.
All the spinlocks are reset to 0.
[in] | size_in | The desired new size. |
Definition at line 540 of file thread_sync.h.
|
inline |
Gets the number of spinlocks in this array.
Definition at line 551 of file thread_sync.h.