[rust] Rust 멀티 태스킹과 스레드

Rust는 안전하고 병렬성이 뛰어난 프로그래밍 언어로서 멀티 태스킹 및 스레딩을 지원합니다. 이 기능들은 Rust 프로그램이 동시에 여러 작업을 처리하거나 병렬로 실행될 수 있도록 해줍니다.

이번 글에서는 Rust에서의 멀티 태스킹과 스레딩을 구현하는 방법과 그 활용에 대해 살펴보겠습니다.

1. 멀티 태스킹

멀티 태스킹은 컴퓨터가 한 번에 여러 작업을 처리하는 것을 말합니다. Rust의 async/await 구문을 사용하면 코드를 비동기적으로 실행하여 멀티 태스킹을 구현할 수 있습니다.

다음은 간단한 async/await를 사용한 Rust 코드 예시입니다.

async fn main() {
    let task1 = task1_function();
    let task2 = task2_function();
    
    // task1과 task2가 완료될 때까지 대기
    let result1 = task1.await;
    let result2 = task2.await;
    
    // 결과를 합쳐서 반환
    let combined_result = combine_results(result1, result2);
    
    println!("Combined result: {}", combined_result);
}

2. 스레딩

Rust는 스레드를 생성하고 관리하는 기능을 표준 라이브러리로 제공합니다. 다중 스레드를 이용하여 병렬 처리를 구현할 수 있습니다.

다음은 Rust에서의 스레드 생성 및 조인하는 예시 코드입니다.

use std::thread;

fn main() {
    let mut handles = vec![];

    for i in 0..5 {
        let handle = thread::spawn(move || {
            println!("Hello from thread {}", i);
        });
        handles.push(handle);
    }

    for handle in handles {
        handle.join().unwrap();
    }
}

스레드는 독립적인 작업을 수행하며, move 키워드를 사용하여 각 스레드가 사용하는 변수의 소유권을 가져갈 수 있습니다.

결론

Rust는 멀티 태스킹과 스레딩을 통해 병렬성을 달성할 수 있는 강력한 기능을 제공합니다. 이러한 기능을 통해 뛰어난 성능과 안정성을 갖춘 프로그램을 개발할 수 있습니다.

더 많은 자세한 정보나 예제는 Rust 공식 홈페이지에서 확인하실 수 있습니다.