1 个不稳定版本
0.1.0 | 2020年8月21日 |
---|
#2157 in 异步
16KB
226 代码行
async-watch2
单生产者、多消费者通道,仅保留最后发送的值。
从 Tokio 的 tokio::sync::watch
实现中提取,最初由 Carl Lerche 编写。
许可证
async-watch2 主要在 MIT 许可证和 Apache 许可证(版本 2.0)的条款下分发。
有关详细信息,请参阅 LICENSE-APACHE 和 LICENSE-MIT。
lib.rs
:
单生产者、多消费者通道,仅保留最后发送的值。
从 Tokio 的 tokio::sync::watch
实现中提取,最初由 Carl Lerche 编写。
此通道可用于从代码库中的多个点监视值的更改,例如配置值的更改。
用法
channel
返回一个 Sender
/ Receiver
对。这是通道的生产者和发送者部分。通道使用初始值创建。 Receiver::recv
在创建时始终准备好,并将产生此初始值或由 Sender
发送的最新值。
对 Receiver::recv
的调用将始终产生最新值。
示例
let (tx, mut rx) = async_watch2::channel("hello");
executor.spawn(async move {
while let Some(value) = rx.recv().await {
println!("received = {:?}", value);
}
});
tx.broadcast("world").unwrap();
关闭
Sender::closed
允许生产者检测所有 Receiver
处理器已丢弃的情况。这表明不再对产生的值感兴趣,可以停止工作。
线程安全
发送者(Sender)和接收者(Receiver)都是线程安全的。它们可以被移动到其他线程,并可以在并发环境中使用。接收者(Receiver)的克隆可能被移动到独立的线程,并且可以并发使用。
依赖项
~38KB