41. Rust: Bezpieczny Licznik (Arc & Mutex)
RustWspółdzielenie stanu między wieloma wątkami bez wyścigów danych.
use std::sync::{Arc, Mutex};
use std::thread;
fn create_counter() {
let counter = Arc::new(Mutex::new(0));
let mut handles = vec![];
for _ in 0..10 {
let counter = Arc::clone(&counter);
handles.push(thread::spawn(move || {
let mut num = counter.lock().unwrap();
*num += 1;
}));
}
}
Kiedy używać
Stosuj, gdy wiele wątków musi modyfikować tę samą wartość współdzieloną bez ryzyka wyścigu danych (data race).
Typowe pułapki
W tym przykładzie brakuje join() na uchwytach wątków — bez tego program może zakończyć się zanim wszystkie wątki skończą pracę.