#value #thread #publish #immutability #wait #receive #publisher

published_value

通过一个线程向其他线程发布一个值

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)

MIT 许可证

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());

无运行时依赖