Function std::sync::mpsc::channel

1.0.0 · source ·
pub fn channel<T>() -> (Sender<T>, Receiver<T>)
Expand description

创建一个新的异步通道,返回 sender/receiver 一半。 在 Sender 上发送的所有数据将以与发送时相同的顺序在 Receiver 上可用,并且没有 send 将阻塞调用线程 (此通道具有一个 “无限缓冲区”,与 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