
Concurrency Basics
Threads、thread::spawn、move closures、channels (mpsc)、Send & Sync トレイト、thread safety
20 面接問題·
Mid-Level
1Rust で新しいスレッドを作成するにはどの関数を使用しますか?
1
Rust で新しいスレッドを作成するにはどの関数を使用しますか?
回答
std::thread モジュールの thread::spawn 関数は新しい実行スレッドを作成します。クロージャをパラメータとして受け取り、join() メソッドでスレッドの終了を待機できる JoinHandle を返します。この関数は Rust におけるスレッドベースの並行プログラミングの主要なエントリポイントです。
2JoinHandle に対して呼び出した join() メソッドは何を返しますか?
2
JoinHandle に対して呼び出した join() メソッドは何を返しますか?
回答
join() メソッドは Result<T, E> を返します。ここで T はスレッドのクロージャの戻り値の型です。スレッドが正常に終了すると Ok(値) が得られます。スレッドがパニックした場合は、パニック情報を含む Err が得られます。これにより、スレッドの結果を安全に取得したり、エラーを処理したりできます。
3thread::spawn に渡すクロージャで move キーワードを使うのはなぜですか?
3
thread::spawn に渡すクロージャで move キーワードを使うのはなぜですか?
回答
move キーワードは、クロージャがキャプチャした変数を借用する代わりに ownership を取得するよう強制します。新しいスレッドは変数が定義されたスコープより長く生存する可能性があるため、thread::spawn では不可欠です。move がないと、参照がスレッドのライフタイム全体で有効であることを保証できないため、コンパイラは拒否します。
4
Rust における Send トレイトの役割は何ですか?
5
Rust における Sync トレイトの役割は何ですか?
+17 面接問題
その他のRust面接トピック
Rustの基礎
Junior
25問Ownership & Borrowing
Junior
22問Structs & Enums
Junior
20問エラー処理
Junior
18問コレクション
Junior
20問モジュールとパッケージ
Junior
18問Traits
Mid-Level
22問Generics
Mid-Level
20問Lifetimes
Mid-Level
20問Iterators & Closures
Mid-Level
22問Smart Pointers
Mid-Level
22問async/await
Mid-Level
22問Testing
Mid-Level
18問Cargo & Ecosystem
Mid-Level
18問Pattern Matching
Mid-Level
18問マクロ
Mid-Level
20問Serde とシリアライゼーション
Mid-Level
20問Unsafe Rust
Senior
20問高度なトレイト
Senior
22問高度な lifetime
Senior
20問Type System
Senior
20問Tokio & Async I/O
Senior
22問パフォーマンス最適化
Senior
20問Memory Management
Senior
20問Web Frameworks
Senior
22問Database Integration
Senior
20問Rust デザインパターン
Senior
20問