[rust] Rust의 스레드 동시성 모델
Rust는 안전하고 효율적인 동시성을 지원하는 언어입니다. 스레드는 Rust에서 매우 유용하게 활용되며, 안전한 동시성을 보장하기 위한 여러 가지 기능을 제공합니다.
1. 스레드 생성하기
Rust에서는 std::thread
모듈을 사용하여 스레드를 생성할 수 있습니다. 아래는 간단한 예제 코드입니다.
use std::thread;
fn main() {
let handle = thread::spawn(|| {
// 스레드 코드 작성
});
handle.join().unwrap();
}
2. 메시지 전달
Rust에서는 std::sync
모듈을 사용하여 스레드 간에 안전하게 데이터를 공유할 수 있습니다. 아래는 메시지 전달을 이용한 예제 코드입니다.
use std::sync::mpsc;
use std::thread;
fn main() {
let (tx, rx) = mpsc::channel();
thread::spawn(move || {
let data = "Hello from the thread";
tx.send(data).unwrap();
});
let received = rx.recv().unwrap();
println!("Received: {}", received);
}
3. 동시성 제어
Rust는 std::sync
모듈을 사용하여 동시성을 제어하는데 유용한 여러 가지 도구를 제공합니다. 예를 들어, Mutex
, RwLock
, Barrier
등이 있습니다.
결론
Rust는 안전하고 효율적인 스레드 동시성 모델을 제공하여 병렬 프로그래밍을 쉽게 할 수 있도록 지원합니다.
참고: Rust 공식 문서 - std::thread, Rust 공식 문서 - std::sync