// dictionary
チャネル.
チャネル
チャネルは、スレッド間でデータを安全に通信するための仕組みです。Sender と Receiver のペアで、送受信を実現します。
基本的な例
use std::sync::mpsc;
use std::thread;
fn main() {
let (tx, rx) = mpsc::channel();
thread::spawn(move || {
tx.send("Hello from thread").unwrap();
});
let received = rx.recv().unwrap();
println!("{}", received);
}
複数のデータ送信
let (tx, rx) = mpsc::channel();
thread::spawn(move || {
let vals = vec![1, 2, 3];
for val in vals {
tx.send(val).unwrap();
}
});
for received in rx {
println!("{}", received);
}
チャネルと所有権
send() は所有権を移動させます。受信側は値の所有権を完全に得ます。これにより、データレースが発生しません。
スレッド や async/await と組み合わせて並行処理を実現します。
この辞書が使われているページ
backlinks 2