💎 Lehrpfad 4: Fearless Concurrency & Systems Master

Rust 14: Shared State Concurrency (Arc>)

Meistere sichere geteilte Zustände zwischen Threads: Atomic Reference Counting (Arc) kombiniert mit exklusiven Locks (Mutex) ohne Data Races.

📂 Dateien dieser Lerneinheit:
📄 aufgabe.rs (Startercode) 🧪 test_aufgabe.rs (Tests) 💡 musterloesung.rs (Lösung) 📖 README.md

💡 1. Concurrency mit Arc & Mutex

Um Daten sicher zwischen mehreren Threads zu mutieren, kombiniert man atomare Referenzzählung (`Arc`) mit exklusiven Mutex-Locks:

use std::sync::{Arc, Mutex};
use std::thread;

fn main() {
    // 1. Thread-sicherer Zähler im Heap:
    let counter = Arc::new(Mutex::new(0));
    let mut handles = vec![];

    for _ in 0..10 {
        let counter_clone = Arc::clone(&counter); // Zähler um 1 erhöhen
        let handle = thread::spawn(move || {
            let mut num = counter_clone.lock().unwrap(); // Mutex sperren
            *num += 1;
        }); // Mutex wird hier automatisch gedroppt und entsperrt!
        handles.push(handle);
    }

    for handle in handles {
        handle.join().unwrap();
    }

    println!("Ergebnis: {}", *counter.lock().unwrap()); // Garantiert 10!
}
🔐 Didaktische Analogie: Der Schlüssel zum Beratungsraum

`Arc` ist der Schlüsselbund: Jeder Mitarbeiter erhält eine exakte Schlüsselkopie. `Mutex` ist der Beratungsraum: Es passt immer nur genau eine Person hinein. Wer fertig ist, schließt die Tür auf und der Nächste darf eintreten!

⚡ 2. Quick-Cheat-Sheet

TypAufgabeThread-Sicherheit
ArcGeteilte Ownership über ThreadgrenzenAtomares Ref-Counting (Thread-Safe)
MutexExklusiver veränderlicher ZugriffSperrt andere Threads bei Zugriff aus
RwLockViele Leser, ein SchreiberOptimiert für Read-Heavy Workloads
MutexGuardSmart Pointer auf geschützte DatenEntsperrt Mutex automatisch bei Drop

⚠️ 3. Häufige Stolperfallen (Gotchas & Anti-Patterns)

⚠️ Rc in Threads versuchen

Wer Rc an thread::spawn übergibt, scheitert am Compiler: Rc cannot be sent between threads safely.

⚠️ Deadlocks durch verschachtelte Locks

Sperrt Thread 1 Lock A dann B, und Thread 2 Lock B dann A, hängt das System. Halte Lock-Haltezeiten ultrakurz!

🧠 4. Diagnostischer Selbst-Check

Überprüfe dein Verständnis von Ownership, Borrowing und Speichersicherheit, bevor du den Code in der Web-IDE schreibst.

🎯 5. Aufgaben & Checkliste in aufgabe.rs

💻 In Web-IDE öffnen & lösen →