13 releases
new 0.1.12 | Nov 6, 2024 |
---|---|
0.1.11 | Mar 9, 2023 |
0.1.10 | Apr 7, 2021 |
0.1.8 | Jun 23, 2019 |
0.1.2 | Sep 28, 2018 |
#191 in Concurrency
Used in 7 crates
(via ate)
19KB
433 lines
RcuCell
A lockless rcu cell implementation that can be used safely in multithread context.
Features
- The write operation would not block the read operation.
- The write operation would "block" the write operation.
- The RcuCell could contain no data
Usage
fn single_thread() {
let t = RcuCell::new(Some(10));
let x = t.read();
let y = t.read();
t.try_lock().unwrap().update(None);
let z = t.read();
let a = z.clone();
drop(t); // t can be dropped before reader
assert_eq!(x.map(|v| *v), Some(10));
assert_eq!(y.map(|v| *v), Some(10));
assert_eq!(z.map(|v| *v), None);
assert_eq!(a.map(|v| *v), None);
}