Rust 주요 주제
Rust Arc and Mutex
Let several threads change one value safely: Arc shares it, Mutex guards it.
배울 내용
- Mutex and lock
- Arc::clone
- Why the count is always right
4 threads x 1000 increments
- 1
Arc::cloneeach thread gets a handle - 2
lock()one at a time - 3
*value += 1safe update - 4
4000always
One lock, many owners
When threads must change the same value, a Mutex makes sure only one of them touches it at a time. Arc lets every thread own a handle to that Mutex.
Arc::clone gives each thread its own handle to the same counter. lock waits until no other thread holds the lock and returns a guard; the lock is released when the guard goes out of scope. Four threads each add 1000, so the result is always 4000.
핵심 포인트
- lock gives one thread access at a time.
- The lock is released when the guard goes out of scope.
- Arc lets every thread own a handle.
실행 가능한 Rust 예제
Rust
main.rs
use std::sync::{Arc, Mutex};
use std::thread;
fn main() {
let counter = Arc::new(Mutex::new(0));
let mut handles = Vec::new();
for _ in 0..4 {
let counter = Arc::clone(&counter);
handles.push(thread::spawn(move || {
for _ in 0..1000 {
let mut value = counter.lock().unwrap();
*value += 1;
}
}));
}
for handle in handles {
handle.join().unwrap();
}
println!("final count: {}", *counter.lock().unwrap());
}
final count: 4000연습
예제를 온라인 컴파일러에서 열고 값을 바꾸거나 한 줄을 추가한 다음, 실행하기 전에 출력을 예상해 보세요. 그런 다음 일부러 코드를 망가뜨리고 컴파일러 메시지를 읽어 보세요.
이 레슨을 마쳤나요?
학습 완료로 표시하면 진행 상황을 기록할 수 있습니다.
진행 상황이 이 브라우저에 저장되어 있습니다 로그인하면 모든 기기에서 이어갈 수 있습니다.
챌린지로 연습하기
이 레슨에서 배운 내용으로 실제 문제를 풀어 보세요. 모든 챌린지는 브라우저에서 실행되며 즉시 테스트와 AI 리뷰를 받을 수 있습니다.
모든 챌린지