[rust] Rust의 멀티 프로세싱과 스레드

Rust는 안전하고 병행성이 뛰어난 프로그래밍 언어로, 멀티 프로세싱과 스레딩을 쉽게 다룰 수 있습니다. 본 블로그에서는 Rust에서의 멀티 프로세싱과 스레드에 대해 알아보겠습니다.

멀티 프로세싱

Rust에서 멀티 프로세싱은 std::process 모듈을 사용하여 간단히 수행할 수 있습니다. 이 모듈은 외부 프로그램 실행, 프로세스 간 통신, 프로세스 제어 등을 지원합니다. 아래는 간단한 예제코드입니다.

use std::process::Command;

fn main() {
    let output = Command::new("ls")
                         .arg("-l")
                         .output()
                         .expect("Failed to execute command");

    println!("ls -l executed successfully:\n{}", String::from_utf8_lossy(&output.stdout));
}

위의 코드는 ls -l 명령어를 실행하여 결과를 콘솔에 출력하는 간단한 프로세스 예제입니다. std::process::Command 모듈을 사용하여 쉽게 외부 프로그램을 실행할 수 있습니다.

스레딩

Rust에서 스레딩은 std::thread 모듈을 사용하여 수행할 수 있습니다. 스레드를 생성하고 조절하는 기능을 제공하며, 안전하고 효율적인 병행성을 지원합니다. 아래는 스레드를 생성하는 간단한 예제코드입니다.

use std::thread;

fn main() {
    let handle = thread::spawn(|| {
        for i in 1..=5 {
            println!("스레드에서: {}", i);
            thread::sleep(std::time::Duration::from_millis(500));
        }
    });

    for i in 1..=3 {
        println!("메인 스레드에서: {}", i);
        thread::sleep(std::time::Duration::from_millis(1000));
    }

    handle.join().unwrap();
}

위의 코드는 메인 스레드와 별도의 스레드에서 각각 반복문을 실행하고, 메인 스레드는 1초마다, 별도의 스레드는 0.5초마다 숫자를 출력하는 예제입니다.

Rust의 멀티 프로세싱과 스레드는 간단한 인터페이스와 안전한 병행성을 제공하여 복잡한 병렬 처리를 안전하게 다룰 수 있습니다.

더 많은 정보는 Rust 공식 홈페이지에서 확인할 수 있습니다.