Function std::sync::mpsc::sync_channel 1.0.0[−][src]
pub fn sync_channel<T>(bound: usize) -> (SyncSender<T>, Receiver<T>)
Expand description
创建一个新的同步有界通道。
SyncSender
上发送的所有数据将以与发送相同的顺序在 Receiver
上可用。
像异步 channel
一样,Receiver
将阻塞直到消息可用为止。
sync_channel
但是,发送者的语义差异很大。
该通道具有内部缓冲区,消息将在该缓冲区上排队。
bound
指定缓冲区大小。
当内部缓冲区已满时,future 将发送 block,等待缓冲区打开。
请注意,缓冲区大小为 0 是有效的,在这种情况下,它变为 “rendezvous channel”,其中每个 send
在与 recv
配对之前不会返回。
SyncSender
可以多次克隆到 send
到同一通道,但是仅支持一个 Receiver
。
与异步通道一样,如果在尝试使用 SyncSender
进行 send
时断开 Receiver
,则 send
方法将返回 SendError
。
同样,如果在尝试 recv
时断开 SyncSender
的连接,则 recv
方法将返回 RecvError
。
Examples
use std::sync::mpsc::sync_channel; use std::thread; let (sender, receiver) = sync_channel(1); // 这立即返回 sender.send(1).unwrap(); thread::spawn(move|| { // 这将阻塞,直到收到上一条消息为止 sender.send(2).unwrap(); }); assert_eq!(receiver.recv().unwrap(), 1); assert_eq!(receiver.recv().unwrap(), 2);Run