use std::sync::mpsc;
use std::thread;
fn main() {
// 创建通道,tx 用于发送,rx 用于接收
let (tx, rx) = mpsc::channel();
// 生成新线程
let handle = thread::spawn(move || {
let message = String::from("Hello from another thread!");
// 发送字符串到通道
tx.send(message).unwrap();
});
// 主线程从通道接收字符串
let received = rx.recv().unwrap();
println!("Received: {}", received);
// 等待新线程结束
handle.join().unwrap();
}
代码关键部分解释:
- 通道创建:
let (tx, rx) = mpsc::channel();
创建了一个多生产者单消费者(mpsc)通道,tx
是发送端,rx
是接收端。
- 线程生成:
thread::spawn(move || { ... })
生成一个新线程,move
关键字确保闭包获取 tx
的所有权,这样新线程才能使用 tx
发送数据。
- 数据发送:
tx.send(message).unwrap();
在新线程中通过发送端 tx
将字符串 message
发送到通道。unwrap()
用于在发送失败时直接 panic。
- 数据接收:
let received = rx.recv().unwrap();
在主线程中通过接收端 rx
从通道接收数据,unwrap()
同样用于在接收失败时 panic。
- 线程等待:
handle.join().unwrap();
等待新线程执行完毕,unwrap()
用于在等待过程中出现错误时 panic。