スレッド生成:
Rustでは、std::thread
モジュールを使用してスレッドを生成します。スレッドを生成するには、std::thread::spawn
関数を呼び出し、生成したいスレッドで実行したいコードをクロージャとして渡します。以下は、スレッドを生成する基本的な例です。
use std::thread;
fn main() {
let handle = thread::spawn(|| {
// スレッドで実行したいコードを記述する
println!("Hello from the thread!");
});
// メインスレッドのコードがここで実行される
handle.join().unwrap();
}
上記の例では、thread::spawn
関数に渡されたクロージャ内のコードが新しいスレッドで実行されます。生成されたスレッドのハンドルはhandle
変数に格納され、handle.join()
を呼び出すことでメインスレッドがスレッドの終了を待機します。
スレッド結合:
Rustでは、スレッドの終了を待機するためにjoin
メソッドを使用します。handle.join()
は、対応するスレッドが終了するまでメインスレッドをブロックします。また、join
メソッドはスレッドが正常に終了した場合はOk
を返し、エラーが発生した場合はErr
を返します。以下は、スレッドの結合の例です。
use std::thread;
fn main() {
let handle = thread::spawn(|| {
// スレッドで実行したいコードを記述する
println!("Hello from the thread!");
});
// メインスレッドのコードがここで実行される
match handle.join() {
Ok(_) => println!("Thread joined successfully"),
Err(_) => println!("Failed to join the thread"),
}
}
スレッドの結合は、スレッドが終了するまで待機しながら、スレッドの実行結果を取得するために非常に便利です。
以上が、Rustでスレッドを生成し、結合する方法の基本的な解説です。さらに詳細な使用方法や応用的な例については、Rustの公式ドキュメントやオンラインのリソースを参考にすることをおすすめします。