| Crates.io | rcu_cell |
| lib.rs | rcu_cell |
| version | 1.2.1 |
| created_at | 2018-09-26 08:36:14.652723+00 |
| updated_at | 2025-05-09 08:18:27.646243+00 |
| description | a lockless rcu cell implementation |
| homepage | https://github.com/Xudong-Huang/rcu_cell |
| repository | https://github.com/Xudong-Huang/rcu_cell |
| max_upload_size | |
| id | 86591 |
| size | 34,957 |
A lockless rcu cell implementation that can be used safely in multithread context.
Support multi-thread read and write operations.
The read operation would not block other read operations.
The read operation is always waitless.
The read operation is something like Arc::clone.
The write operation would not block other read operations.
The write operation is lockless.
The write operation is something like Atomic Swap.
The RcuCell could contain no data
Could be compiled with no_std
use rcu_cell::RcuCell;
use std::sync::Arc;
let t = Arc::new(RcuCell::new(10));
let t1 = t.clone();
let t2 = t.clone();
let d1 = t1.take().unwrap();
assert_eq!(*d1, 10);
assert_eq!(t1.read(), None);
let d2 = t2.write(42);
assert!(d2.is_none());
let d3 = t2.read().unwrap();
assert_eq!(*d3, 42);