|
hai 1 ano | |
---|---|---|
.. | ||
src | hai 1 ano | |
tests | hai 1 ano | |
Cargo.toml | hai 1 ano | |
README.md | hai 1 ano |
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
句柄来接收值。
每个句柄可用于单独的任务。