소개
이 실험에서는 Rust 코드 조각을 통해 spawn 함수와 이동 가능한 클로저를 사용하여 네이티브 OS 스레드를 생성하는 방법을 보여줍니다. 이 코드는 생성된 스레드를 저장할 벡터를 생성하고, 숫자 범위를 반복하여 여러 스레드를 생성하며, 각 스레드 번호를 식별하는 메시지를 출력합니다. 마지막으로 메인 스레드는 join 함수를 사용하여 생성된 각 스레드가 완료될 때까지 기다립니다.
참고: 실험에서 파일 이름을 지정하지 않으면 원하는 파일 이름을 사용할 수 있습니다. 예를 들어
main.rs를 사용하고rustc main.rs && ./main으로 컴파일 및 실행할 수 있습니다.
스레드
Rust 는 spawn 함수를 통해 네이티브 OS 스레드를 생성하는 메커니즘을 제공하며, 이 함수의 인수는 이동 가능한 클로저입니다.
use std::thread;
const NTHREADS: u32 = 10;
// 이것은 `main` 스레드입니다.
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 에 의해 스케줄링됩니다.
요약
축하합니다! 스레드 실험을 완료했습니다. LabEx 에서 더 많은 실험을 통해 기술을 향상시킬 수 있습니다.