스레드
Rust는 spawn 함수를 통해 네이티브 OS 스레드를 생성하는 메커니즘을 제공합니다. 이 함수의 인자는 이동(moving) 클로저입니다.
use std::thread;
const NTHREADS: u32 = 10;
// 메인 스레드입니다
fn main() {
// 생성된 자식 스레드들을 담을 벡터를 만듭니다.
let mut children = vec![];
for i in 0..NTHREADS {
// 또 다른 스레드를 생성합니다
children.push(thread::spawn(move || {
println!("이것은 {}번 스레드입니다", i);
}));
}
for child in children {
// 스레드가 종료될 때까지 기다립니다. 결과를 반환합니다.
let _ = child.join();
}
}
이러한 스레드들은 OS에 의해 스케줄링됩니다.