Progrust Library.

// dictionary

チャネル.

チャネル

チャネルは、スレッド間でデータを安全に通信するための仕組みです。SenderReceiver のペアで、送受信を実現します。

基本的な例

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

  1. 辞書async/await
  2. 辞書スレッド