mutex
Mutex and Condition Variable
Constants
FUTEX_WAIT = 0FUTEX_WAKE = 1Functions
| Function | Description |
|---|---|
_mtx_futex_wait | Internal: futex syscall wrapper. |
_mtx_futex_wake | |
mutex_new | Create new mutex (unlocked). |
mutex_lock | Lock mutex. Blocks if already locked. |
mutex_unlock | Unlock mutex. |
mutex_trylock | Non-blocking try-lock. Returns 1 if acquired, 0 if not. |
condvar_new | Create condition variable. |
condvar_wait | Wait on condition variable. Must hold mutex m. Releases mutex, waits, re-acqu… |
condvar_signal | Wake one waiter. |
condvar_broadcast | Wake all waiters. |
spinlock_new | Create simple spinlock. |
spinlock_lock | Spinlock: busy-wait until acquired. |
spinlock_unlock | Spinlock: release. |
Details
_mtx_futex_wait
fn _mtx_futex_wait(addr: &i64, expected: i64) -> i64Internal: futex syscall wrapper.
_mtx_futex_wake
fn _mtx_futex_wake(addr: &i64, count: i64) -> i64mutex_new
fn mutex_new() -> &i64Create new mutex (unlocked).
mutex_lock
fn mutex_lock(m: &i64)Lock mutex. Blocks if already locked.
mutex_unlock
fn mutex_unlock(m: &i64)Unlock mutex.
mutex_trylock
fn mutex_trylock(m: &i64) -> i64Non-blocking try-lock. Returns 1 if acquired, 0 if not.
condvar_new
fn condvar_new() -> &i64Create condition variable.
condvar_wait
fn condvar_wait(cv: &i64, m: &i64)Wait on condition variable. Must hold mutex m. Releases mutex, waits, re-acquires mutex on return.
condvar_signal
fn condvar_signal(cv: &i64)Wake one waiter.
condvar_broadcast
fn condvar_broadcast(cv: &i64)Wake all waiters.
spinlock_new
fn spinlock_new() -> &i64Create simple spinlock.
spinlock_lock
fn spinlock_lock(sl: &i64)Spinlock: busy-wait until acquired.
spinlock_unlock
fn spinlock_unlock(sl: &i64)Spinlock: release.