[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 공식 홈페이지에서 확인하실 수 있습니다.