スレッド
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安全なサーバー側採点連携が未接続のため、現在は提出できません。
採点基盤準備中
公開テストケース
読み込み中…