cyrus 7f6ec00cca oneshot channel hai 1 ano
..
src 3999e017df channels hai 1 ano
tests 7f6ec00cca oneshot channel hai 1 ano
Cargo.toml e2a3a48e9e broadcast channels hai 1 ano
README.md 7f6ec00cca oneshot channel hai 1 ano

README.md

tokio 的管道

broadcast channel

pub fn channel<T: Clone>(capacity: usize) -> (Sender<T>, Receiver<T>)

创建一个有边界的、多生产者、多消费者管道。里面每个发送的值都会广播到所有活动的接受者。

实际容量可能大于初始参数指定的容量。

Sender 上发送的所有数据将按照发送顺序在每个活动的 Receiver 上可用。

Sender 可以从流程中的多个点克隆到 send 到同一管道,也可以从 Arc 并发使用。新的 Receiver 句柄是通过调用 Sender::subscribe 创建的。

如果所有 Receiver 句柄都被删除,则 send 方法将返回 SendError。同样的,如果所有 Sender 句柄都被删除,则 recv 方法将返回 RecvError

watch channel

pub fn channel<T>(init: T) -> (Sender<T>, Receiver<T>)

创建一个监视管道,返回“发送”和“接收”句柄。

Sender 发送的所有值都将对 Receiver 句柄可见。只有最后发送的值可供 Receiver 使用。所有中间值都被丢弃。

mpsc channel

pub fn channel<T>(buffer: usize) -> (Sender<T>, Receiver<T>)

创建一个有边界的 MPSC 管道,用于在具有反压的异步任务之间进行通信。

该管道将缓冲最多提供数量的消息。一旦缓冲区已满,尝试发送新的消息将等待,直到从管道接收消息。提供的缓冲容量至少为1.

Sender 上发送的所有数据都将按照发送时的顺序在 Receiver 上可用。

Sender 可以从多个代码位置克隆到 send 到同一管道。仅支持一个 Receiver

如果的尝试 send 时,Receiver断开连接,则 send 方法将返回 SendError;如果在尝试 recv 时,Sender 断开连接,则 recv 方法将返回 None

oneshot channel

pub fn channel<T>() -> (Sender<T>, Receiver<T>)

创建一个一次性管道,用于跨异步任务发送单个值。

该函数返回单一的“发送”和“接收”句柄。Sender 句柄由生产者使用来发送值。消费者使用 Receiver 句柄来接收值。

每个句柄可用于单独的任务。