Skip to content

Kijewski/bilock

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

About

A minimal spin-lock based two-handle mutex pair for `no_std` Rust

Resources

License

Apache-2.0 and 2 other licenses found

Licenses found

Apache-2.0
LICENSE.Apache
ISC
LICENSE.ISC
MIT
LICENSE.MIT

Security policy

Stars

Watchers

Forks

Contributors

Languages