1 unstable release
Uses old Rust 2015
0.1.2 | Feb 17, 2017 |
---|---|
0.1.1 |
|
0.1.0 |
|
#72 in #synchronization-primitive
4KB
54 lines
A lock that allows for an unlimited number of concurrent readers, which are never blocked. Only one writer can access the resource at a time.
Examples
use rculock::{RcuLock, RcuGuard};
// Create a new RcuLock protecting a piece of data, in this case a number (u32).
let data: RcuLock<u32> = RcuLock::new(5);
assert_eq!(5, *data.read());
{
// The data is cloned and handed to the writer
let mut guard: RcuGuard<u32> = data.write();
// RcuGuard implements `Deref` and `DerefMut` for easy access to the data.
*guard = 4;
// The writer has changed its copy of the data, but the changes
// have not yet made it back to the master `RcuLock`.
assert_eq!(5, *data.read());
}
// After the write guard is dropped, the state of the resource
// as the writer sees it is atomically stored back into the master RcuLock.
assert_eq!(4, *data.read());
Dependencies
~1MB
~18K SLoC