← Rust

LESSON / MIXED

スレッドとSend・Sync

スレッドとSend・Syncを学び、実務での設計判断につなげます。

スレッド

std::thread::spawnで新しいスレッドを開始し、joinで終了を待ちます。moveクロージャは必要な値の所有権をスレッドへ移します。

use std::thread;
fn main(){
 let values=vec![1,2,3];
 let worker=thread::spawn(move||values.iter().sum::<i32>());
 println!("{}",worker.join().unwrap());
}

Sendは値の所有権を別スレッドへ移せること、Syncは共有参照を複数スレッドから安全に使えることを表します。

並行化の判断

スレッド生成・スケジューリング・同期にもコストがあります。小さな仕事では逐次処理の方が速い場合があります。共有可変状態は所有権を分ける、チャネルを使う、Mutexで保護するなどの方法で扱います。

演習:ワーカーによる合計

コード提出フォーム

RUST

安全なサーバー側採点連携が未接続のため、現在は提出できません。

採点基盤準備中

公開テストケース

読み込み中…