Rust 程式設計中的通道
通道是一種允許在兩個或多個執行緒之間進行通訊的媒介。Rust 提供非同步通道,以實現執行緒之間的通訊。
Rust 中的通道允許在兩個端點之間進行單向通訊。這兩個端點是傳送方和接收方。
示例
考慮如下所示的示例 −
use std::sync::mpsc::{Sender, Receiver};
use std::sync::mpsc;
use std::thread;
static NTHREADS: i32 = 3;
fn main() {
let (tx, rx): (Sender, Receiver) = mpsc::channel();
let mut children = Vec::new();
for id in 0..NTHREADS {
let thread_tx = tx.clone();
let child = thread::spawn(move || {
thread_tx.send(id).unwrap();
println!("thread {} done", id);
});
children.push(child);
}
let mut ids = Vec::with_capacity(NTHREADS as usize);
for _ in 0..NTHREADS {
ids.push(rx.recv());
}
for child in children {
child.join().expect("oops! the child thread stopped working");
}
println!("{:?}", ids);
}在上方的程式碼中,我們試圖透過一個通道將執行緒的 id 傳遞到另一個執行緒。
輸出
當我們執行上述程式碼時,我們會看到以下輸出
thread 0 done thread 1 done thread 2 done [Ok(0), Ok(1), Ok(2)]
該輸出表明所有執行緒都完美工作,並且能夠透過通道在它們之間實現通訊。
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP