Function std::sync::mpsc::channel 1.0.0[−][src]
pub fn channel<T>() -> (Sender<T>, Receiver<T>)
Expand description
创建一个新的异步通道,返回 sender/receiver 一半。
在 Sender
上发送的所有数据将以与发送时相同的顺序在 Receiver
上可用,并且没有 send
将阻塞调用线程 (此通道具有一个 “infinite buffer”,与 sync_channel
不同,它将在达到其缓冲区限制后阻塞)。
recv
当至少有一个 Sender
活着 (包括克隆) 时,将阻塞直到消息可用。
Sender
可以多次克隆到 send
到同一通道,但是仅支持一个 Receiver
。
如果在尝试使用 Sender
进行 send
时断开 Receiver
的连接,则 send
方法将返回 SendError
。同样,如果在尝试 recv
时断开 Sender
的连接,则 recv
方法将返回 RecvError
。
Examples
use std::sync::mpsc::channel; use std::thread; let (sender, receiver) = channel(); // Spawn 关闭昂贵的计算 thread::spawn(move|| { sender.send(expensive_computation()).unwrap(); }); // 暂时做一些有用的工作 // 让我们看看答案是什么 println!("{:?}", receiver.recv().unwrap());Run