Rust

Concurrency Basics

Threads、thread::spawn、move closures、channels (mpsc)、Send & Sync トレイト、thread safety

20 面接問題·
Mid-Level
1

Rust で新しいスレッドを作成するにはどの関数を使用しますか?

回答

std::thread モジュールの thread::spawn 関数は新しい実行スレッドを作成します。クロージャをパラメータとして受け取り、join() メソッドでスレッドの終了を待機できる JoinHandle を返します。この関数は Rust におけるスレッドベースの並行プログラミングの主要なエントリポイントです。

2

JoinHandle に対して呼び出した join() メソッドは何を返しますか?

回答

join() メソッドは Result<T, E> を返します。ここで T はスレッドのクロージャの戻り値の型です。スレッドが正常に終了すると Ok(値) が得られます。スレッドがパニックした場合は、パニック情報を含む Err が得られます。これにより、スレッドの結果を安全に取得したり、エラーを処理したりできます。

3

thread::spawn に渡すクロージャで move キーワードを使うのはなぜですか?

回答

move キーワードは、クロージャがキャプチャした変数を借用する代わりに ownership を取得するよう強制します。新しいスレッドは変数が定義されたスコープより長く生存する可能性があるため、thread::spawn では不可欠です。move がないと、参照がスレッドのライフタイム全体で有効であることを保証できないため、コンパイラは拒否します。

4

Rust における Send トレイトの役割は何ですか?

5

Rust における Sync トレイトの役割は何ですか?

+17 面接問題

次の面接に向けてRustをマスター

すべての問題、flashcards、技術テスト、コードレビュー演習、面接シミュレーターにアクセス。

無料で始める