← 学习中心

通道与消息传递

mpsc:多生产者单消费者

本节你将能

使用 std::sync::mpsc 在线程间传递消息。

直觉模型

「不要通过共享内存来通信;通过通信来共享内存」——通道把所有权搬到接收方。

核心要点

  • channel() 得到 Sender/Receiver
  • send 转移所有权;recv 阻塞等待
  • 可 clone Sender 实现多生产者
use std::sync::mpsc;
use std::thread;
let (tx, rx) = mpsc::channel();
thread::spawn(move || { tx.send(String::from("hi")).unwrap(); });
println!("{}", rx.recv().unwrap());

常见误区

在接收端还活着时丢弃所有 Sender——会得到断开错误,需设计生命周期。

动手

多个 worker 发送计算结果,主线程收集。

互动

测验:send 后发送方能否继续使用原值。

本节小结

下一节在必须共享可变时使用 Mutex。

通道与消息传递 - 生命科学与前沿科技学习平台 | 必学必会