通道
Rust 通道分為兩個部分:Sender<T> 和 Receiver<T>。這兩個部分 透過通道相連,但你只能看到端點。
use std::sync::mpsc; use std::thread; fn main() { let (tx, rx) = mpsc::channel(); tx.send(10).unwrap(); tx.send(20).unwrap(); println!("Received: {:?}", rx.recv()); println!("Received: {:?}", rx.recv()); let tx2 = tx.clone(); tx2.send(30).unwrap(); println!("Received: {:?}", rx.recv()); }
mpsc代表多重生產者、唯一消費者。Sender和SyncSender會實作Clone(用於製作多重生產者),但Receiver不會。send()和recv()會傳回Result。如果傳回的是Err,表示對應的Sender或Receiver已釋放,且通道已關閉。