2个不稳定版本
0.2.0 | 2024年8月9日 |
---|---|
0.1.0 | 2024年6月18日 |
#317 in 并发
131每月下载量
12KB
163 行
genzero
genzero是一个库,允许您获取类型的最新值。
为什么要使用genzero?
在许多并发程序中,可能会有许多读取线程想要获取由另一个线程(spmc)更新的类型的最新值。一种简单的方法是使用Mutex/RWLock来锁定共享数据。然而,在许多情况下,锁定速度较慢,并且特别不允许我们最大化吞吐量。《RCU》(Read-Copy-Update)是一种技术,最初在Linux内核中开发,它允许上述模式而不阻塞写入者并提高吞吐量(《Fedor Pikus CppCon 2017关于RCU的演讲》)。《crossbeam-epoch》是一个基于时代的内存回收器,它实现了Rust的RCU方法。genzero是基于crossbeam-epoch库构建的API,用于实现这种简单的spmc最新值模式。
如何使用genzero?
genzero的API类似于crossbeam::channel
或std:sync::mpsc
简单示例
// Initialize first value to 0
let (mut tx, rx) = genzero::new<u32>(0);
tx.send(10);
assert_eq!(rx.recv(), Some(10));
依赖关系
~270KB