通道与消息传递
mpsc:多生产者单消费者
本节你将能
使用 std::sync::mpsc 在线程间传递消息。
直觉模型
「不要通过共享内存来通信;通过通信来共享内存」——通道把所有权搬到接收方。
核心要点
channel()得到Sender/Receiversend转移所有权;recv阻塞等待- 可
cloneSender 实现多生产者
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。