Skip to main content

Crate bilock

Crate bilock 

Source
Expand description

§Bilock: a minimal spin-lock based two-handle Arc<Mutex<T>> replacement

GitHub Workflow Status Crates.io docs.rs

Bilock::new() provides two linked handles that share ownership of the same guarded value. A lock is held by either a temporary Guard or an OwnedGuard, and the underlying value is released once both handles are dropped.

The library employs spin loops to wait for the lock, so it is intended for short critical sections only.

§Example

use bilock::Bilock;

let (mut left, mut right) = Bilock::new(42);
let guard = left.lock();
assert_eq!(*guard, 42);
drop(guard);

let mut guard = right.lock();
*guard = 4711;
assert_eq!(*guard, 4711);

§License

This project is tri-licensed under ISC OR MIT OR Apache-2.0. Contributions must be licensed under the same terms. Users may follow any one of these licenses, or all of them.

See the individual license texts at

Structs§

Bilock
This struct behaves like Arc<Mutex<T>>, but it is neither Clone nor Default.
Guard
Guard that holds the lock and unlocks on drop.
OwnedGuard
Owned lock guard holding the inner value until dropped or unlocked.

Traits§

BilockLike
Trait implemented by types that belong to the same Bilock pair.