Rust 에서 네이티브 스레드 생성

Beginner

This tutorial is from open-source community. Access the source code

소개

이 실험에서는 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 에서 더 많은 실험을 통해 기술을 향상시킬 수 있습니다.