Expand description
This library provides implementations of Mutex
, RwLock
, Condvar
,
Barrier
, and Once
that are smaller and faster than those in the Rust
standard library. It also provides a ReentrantMutex
type.
Everything is powered by lock-free thread queues in userspace
which allows the synchronization primitives to be 1 word (usize
) large.
All thread blocking is done through std::thread::park
for maximum portability.
Re-exports
pub use ::lock_api;
Structs
A barrier enables multiple threads to synchronize the beginning of some computation.
A BarrierWaitResult
is returned by Barrier::wait()
when all threads
in the Barrier
have rendezvoused.
A Condition Variable
A synchronization primitive which can be used to run a one-time initialization. Useful for one-time initialization for globals, FFI or related functionality.
Raw mutex type implemented with lock-free userspace thread queues.
Raw rwlock type implemented with lock-free userspace thread queues.
Implementation of the GetThreadId
trait for lock_api::ReentrantMutex
.
A type indicating whether a timed wait on a condition variable returned due to a time out or not.
Enums
Current state of a Once
.
Functions
Creates a new mutex in an unlocked state ready for use.
Creates a new reentrant mutex in an unlocked state ready for use.
Creates a new instance of an RwLock<T>
which is unlocked.
Type Definitions
An RAII mutex guard returned by MutexGuard::map
, which can point to a
subfield of the protected data.
An RAII mutex guard returned by ReentrantMutexGuard::map
, which can point to a
subfield of the protected data.
An RAII read lock guard returned by RwLockReadGuard::map
, which can point to a
subfield of the protected data.
An RAII write lock guard returned by RwLockWriteGuard::map
, which can point to a
subfield of the protected data.
A mutual exclusion primitive useful for protecting shared data
An RAII implementation of a “scoped lock” of a mutex. When this structure is dropped (falls out of scope), the lock will be unlocked.
A mutex which can be recursively locked by a single thread.
An RAII implementation of a “scoped lock” of a reentrant mutex. When this structure is dropped (falls out of scope), the lock will be unlocked.
A reader-writer lock
RAII structure used to release the shared read access of a lock when dropped.
RAII structure used to release the exclusive write access of a lock when dropped.