saa-0.1.0 has been yanked.
Synchronous and Asynchronous Synchronization Primitives
Low-level synchronization primitives that provide both synchronous and asynchronous interfaces.
Features
- Asynchronous counterparts of synchronous methods.
Loom
support:features = ["loom"]
.- No spin-locks and no busy loops.
Lock
saa::Lock
is a Low-level shared-exclusive lock that provides both synchronous and asynchronous interfaces. Synchronous locking methods such as lock_exclusive_sync
or lock_shared_sync
can be used with their asynchronous counterparts, lock_exclusive_async
or lock_shared_async
, at the same time. saa::Lock
implements a heap-allocation-free fair wait queue that is shared among both synchronous and asynchronous methods.
Examples
use Lock;
let lock = default;
lock.lock_exclusive_sync;
assert!;
assert!;
assert!;
assert!;
async ;
Semaphore
saa::Semaphore
is a synchronization primitive that allows a fixed number of threads to access a resource concurrently.
Examples
use Semaphore;
let semaphore = default;
semaphore.acquire_many_sync;
assert!;
assert!;
assert!;
assert!;
assert!;
async ;