Expand description
§Manual RwLock
A library implementing An RW lock with more manual control
Sorry for poor documentation, I will update this later.
New read write lock struct: MrwLock
§Examples
§Convert between Guards
use manual_rwlock::MrwLock;
let mrw_lock = MrwLock::new(10);
let read = mrw_lock.read().unwrap();
let mut write = read.to_write().unwrap();
*write = 5;
let read = write.to_read();
assert_eq!(*read, 5)
§Release and Reobtain locks
use manual_rwlock::MrwLock;
let mrw_lock = MrwLock::new(10);
let read = mrw_lock.read().unwrap();
unsafe {read.early_release();}
{
let mut write = mrw_lock.write().unwrap();
*write = 5;
}
unsafe {read.reobtain();}
assert_eq!(*read, 5)
§Clone ReadGaurd
use manual_rwlock::MrwLock;
let rwlock = MrwLock::new(5);
let read = rwlock.read().unwrap();
let read2 = read.clone();
assert_eq!(*read2, 5);
§Use Locking Directly
Structs§
- Lock
State - State that manages control flow for MrwLock and Guards: SliceReadGaurd, ReadGaurd ,SliceWriteGaurd, WriteGaurd Passing by reference allows interior mutability
- MrwLock
- Read
Gaurd - Slice
Read Gaurd - Slice Read Guard
- Slice
Write Gaurd - Slice Write Guard
- Write
Gaurd