Expand description
§Bilock: a minimal spin-lock based two-handle Arc<Mutex<T>> replacement
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 neitherClonenorDefault. - Guard
- Guard that holds the lock and unlocks on drop.
- Owned
Guard - Owned lock guard holding the inner value until dropped or unlocked.
Traits§
- Bilock
Like - Trait implemented by types that belong to the same
Bilockpair.