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;
let = new;
let guard = left.lock;
assert_eq!;
drop;
let mut guard = right.lock;
*guard = 4711;
assert_eq!;
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