#rcu #lockless #atomic

无std rcu_cell

一个无锁的rcu cell实现

12个版本

使用旧的Rust 2015

0.1.11 2023年3月9日
0.1.10 2021年4月7日
0.1.8 2019年6月23日
0.1.7 2019年4月2日
0.1.2 2018年9月28日

⚠️ 已报告问题

259并发

Download history 21/week @ 2024-03-15 15/week @ 2024-03-22 36/week @ 2024-03-29 12/week @ 2024-04-05 7/week @ 2024-04-12 3/week @ 2024-04-19 15/week @ 2024-04-26 17/week @ 2024-05-03 25/week @ 2024-05-10 44/week @ 2024-05-17 35/week @ 2024-05-24 30/week @ 2024-05-31 29/week @ 2024-06-07 20/week @ 2024-06-14 11/week @ 2024-06-21 6/week @ 2024-06-28

每月71次下载
7 个crates中使用(通过 ate

LGPL-3.0

18KB
428

Build Status Current Crates.io Version Document

RcuCell

RcuCell是一个可以在多线程环境中安全使用的无锁rcu cell实现。

功能

  • 写操作不会阻塞读操作。
  • 写操作会“阻塞”写操作。
  • RcuCell可以不包含数据。

用法

   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);
    }

无运行时依赖