4 个版本
使用旧的 Rust 2015
0.1.1 | 2016年6月12日 |
---|---|
0.1.0 | 2016年5月12日 |
0.0.5 | 2016年5月11日 |
0.0.1 | 2016年5月9日 |
#875 in 并发
用于 valid_toml
68KB
1.5K SLoC
shareable
此 crate 允许通过原子内存操作共享各种数据对象,以尽可能避免使用 Mutex 的开销。SharedF32、SharedI8、SharedI16、SharedI32、SharedIsize、SharedU8、SharedU16、SharedU32 和 SharedUsize 对象基本上只是将数据传递给原子元素。
SharedF64、SharedI64 和 SharedU64 对象在支持 32 位和 64 位环境时很有用。在 64 位环境中,它们将使用更快的原子数据对象来共享值,在 32 位编译时,由于原子操作只处理 32 位值,它们将使用较慢的互斥锁。
SharedObject 将共享一个只读对象。内部使用一个非常小的自旋锁来确保精确的引用计数,但应该提供比使用 Mutex 更快的访问速度。
示例
use std::sync::mpsc;
use std::thread;
use shareable::SharedObject;
let value1 = SharedObject::new(String::from("abc"));
let value2 = value1.clone();
let (tx, rx) = mpsc::channel();
let thread = thread::spawn(move || {
rx.recv();
assert_eq!(value2.get().as_str(), "xyz");
});
value1.set(String::from("xyz"));
tx.send(());
thread.join().unwrap();