💎 Lehrpfad 4: Fearless Concurrency & Systems Master

Master 16: High-Speed In-Memory LRU Cache Engine

Das Masterprojekt: Entwickle einen hochgradig nebenläufigen, thread-sicheren LRU-Cache (Least Recently Used) mit Arc>, deterministischer Performance und Cargo Tests.

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

💡 1. High-Performance Cache Architektur

Kombiniere alle Kernkompetenzen: Generics, Ownership, Concurrency-Sicherheit und O(1) Cache-Verdrängung ohne Garbage Collection Pausen:

use std::collections::HashMap;
use std::sync::{Arc, RwLock};

pub struct LruCache {
    capacity: usize,
    store: Arc>>,
}

impl LruCache {
    pub fn new(capacity: usize) -> Self {
        Self {
            capacity,
            store: Arc::new(RwLock::new(HashMap::with_capacity(capacity))),
        }
    }

    pub fn get(&self, key: &K) -> Option {
        let read_guard = self.store.read().unwrap(); // Parallele Leser erlaubt!
        read_guard.get(key).cloned()
    }

    pub fn put(&self, key: K, value: V) {
        let mut write_guard = self.store.write().unwrap(); // Exklusiver Schreibzugriff
        write_guard.insert(key, value);
    }
}
🏎️ Didaktische Analogie: Das Formel-1-Boxenstopp-Team

In einem High-Speed-Cache zählt jede Nanosekunde. Rust liefert kompromisslose Rohleistung wie C++, verhindert aber gleichzeitig Speicherlöcher und Race Conditions mit mathematischer Strenge!

⚡ 2. Quick-Cheat-Sheet

AnforderungRust LösungPerformance-Vorteil
Schneller Key-LookupHashMapO(1) Durchschnittslaufzeit
Thread-SicherheitArc>Parallele Leser ohne Lock-Contention
LatenzstabilitätRAII Memory DeallocationKeine Stop-the-World GC-Pausen
TypsicherheitGenerics Zero-Cost Monomorphisierung

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

⚠️ Deadlock bei Read-to-Write Lock Umwandlung

Versucht ein Thread mit aktivem `read()`-Lock sofort einen `write()`-Lock anzufordern, blockiert er sich selbst! Drop den Read-Guard vorher.

⚠️ Klonen großer Werte

Wenn `V` riesig ist, ist `.cloned()` teuer. Gib stattdessen `Arc` zurück, um nur Zeiger zu klonen.

🧠 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 →