capypad
0 Tage Serie
rust / intermediate
Snippet

Thread-sicherer geteilter Zustand mit Arc und Mutex

Arc (Atomic Reference Counted) ermöglicht es mehreren Threads, Eigentümer derselben Daten zu sein, während Mutex (Mutual Exclusion) sicherstellt, dass jeweils nur ein Thread die Daten verändern kann.

snippet.rs
rust
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
use std::sync::{Arc, Mutex};
use std::thread;
 
let counter = Arc::new(Mutex::new(0));
let mut handles = vec![];
 
for _ in 0..10 {
let counter = Arc::clone(&counter);
let handle = thread::spawn(move || {
let mut num = counter.lock().unwrap();
*num += 1;
});
handles.push(handle);
}
 
for handle in handles { handle.join().unwrap(); }
Erklärung
1
Arc::new(Mutex::new(0))
Erstellt einen atomaren referenzgezählten Mutex, der den Initialwert hält.
2
counter.lock().unwrap()
Erwirbt den Lock, um sicher auf den inneren Wert zuzugreifen und ihn zu ändern.