#value #latest #rcu #reader-writer #thread #memory

genzero

genzero是一个库,允许您获取类型的最新值。

2个不稳定版本

0.2.0 2024年8月9日
0.1.0 2024年6月18日

#317 in 并发

Download history 140/week @ 2024-06-14 18/week @ 2024-06-21 7/week @ 2024-07-12 10/week @ 2024-07-19 9/week @ 2024-07-26 109/week @ 2024-08-09

131每月下载量

MPL-2.0许可证

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::channelstd: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