A spinlock implementation in rust
Run cargo build
The library implements a Reader/Writer lock. When locking a spin lock for shared Read access, you will get a reference to the protected data, and while locking for an exclusive Write access, you will get a mutable reference.
extern crate spinlock;
use spinlock::SpinLock;
fn main() {
let spin = SpinLock::new(0);
// Write access
{
let mut data = spin.write().unwrap();
*data += 1;
}
// Read access
{
let data = spin.read().unwrap();
println!("{}", *data);
}
}
Please note that the spinlock doesn't deal itself with reference counting. You
might want to use Arc<SpinLock<T>>
to share the lock between threads.
The implementation is derived from the spinlock implementation written by Matt Dillon for DragonFlyBSD