1 个不稳定版本

0.1.0 2020年8月21日

#2157 in 异步

Apache-2.0 OR MIT

16KB
226 代码行

async-watch2

单生产者、多消费者通道,仅保留最后发送的值。

Tokiotokio::sync::watch 实现中提取,最初由 Carl Lerche 编写。

许可证

async-watch2 主要在 MIT 许可证和 Apache 许可证(版本 2.0)的条款下分发。

有关详细信息,请参阅 LICENSE-APACHELICENSE-MIT


lib.rs:

单生产者、多消费者通道,仅保留最后发送的值。

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