#lock-free #reader-writer #cell #read #access #eventually

left-right-cell

一个具有无锁并发读访问的单元格

4个版本

0.1.3 2024年1月20日
0.1.2 2022年7月26日
0.1.1 2022年7月26日
0.1.0 2022年7月26日

265并发

Download history · Rust 包仓库 433/week @ 2024-04-23 · Rust 包仓库 244/week @ 2024-04-30 · Rust 包仓库 299/week @ 2024-05-07 · Rust 包仓库 153/week @ 2024-05-14 · Rust 包仓库 195/week @ 2024-05-21 · Rust 包仓库 259/week @ 2024-05-28 · Rust 包仓库 281/week @ 2024-06-04 · Rust 包仓库 218/week @ 2024-06-11 · Rust 包仓库 229/week @ 2024-06-18 · Rust 包仓库 305/week @ 2024-06-25 · Rust 包仓库 238/week @ 2024-07-02 · Rust 包仓库 148/week @ 2024-07-09 · Rust 包仓库 91/week @ 2024-07-16 · Rust 包仓库 63/week @ 2024-07-23 · Rust 包仓库 207/week @ 2024-07-30 · Rust 包仓库 210/week @ 2024-08-06 · Rust 包仓库

581 每月下载

MIT 许可证

6KB
81

left-right-cell

left-right-cell 是使用 left-right crate 创建的无锁、最终一致的单元格。它允许读者从单元格中读取而不会阻塞,而写入者可能在写入时阻塞。这是通过存储数据两个副本实现的,一个用于读者,一个用于写入者。

let (mut w, r) = left_right_cell::new(false);

let t = std::thread::spawn(move || {
    loop {
        let value = r.get().unwrap();
        if *value {
            break;
        }
    }
});

w.set(true);
w.publish();
t.join().unwrap();
assert!(true);

lib.rs:

left-right-cell 是使用 left-right crate 创建的无锁、最终一致的单元格。它允许读者从单元格中读取而不会阻塞,而写入者可能在写入时阻塞。这是通过存储两个数据副本实现的,一个用于读者,一个用于写入者。

依赖项

~0.1–26MB
~330K SLoC