3 个版本
使用旧的 Rust 2015
0.1.2 | 2019年3月6日 |
---|---|
0.1.1 | 2018年11月11日 |
0.1.0 | 2018年11月11日 |
#13 在 #publisher
在 2 个 crate 中使用 (通过 workpool)
9KB
161 行
发布值
发布值
允许一个线程将一个值“发布”到多个其他线程。其他线程可以等待值被发布,并在值发布后接收对该值的不可变引用。一旦发布,该值就是不可变的。发布后的值请求是高效的,不需要获取锁。
示例
let (publisher, waiter) = published_value::new();
let thread1 = std::thread::spawn({
let waiter = waiter.clone();
move || {
let value = waiter.wait_for_value();
format!("thread1 received value {}", value)
}
});
let thread2 = std::thread::spawn({
let waiter = waiter.clone();
move || {
let value = waiter.wait_for_value();
format!("thread2 received value {}", value)
}
});
publisher.publish(42);
assert_eq!(thread1.join().unwrap(), "thread1 received value 42".to_string());
assert_eq!(thread2.join().unwrap(), "thread2 received value 42".to_string());