- Dieser Artikel diskutiert die Herausforderungen beim Einsatz von Rust für User-Space-Software mit massiver Nebenläufigkeit.
- Das asynchrone Modell von Rust wurde entwickelt, um zwei Kernkonzepte des modernen Computings zu handhaben: Nebenläufigkeit und Parallelität.
- Parallelität umfasst die gleichzeitige Ausführung von Code auf mehreren CPUs.
- Nebenläufigkeit umfasst das Zerlegen eines Problems in unabhängige Teile, die ohne feste Reihenfolge oder nur mit teilweiser Reihenfolge ausgeführt werden.
- Der Artikel hebt die Grenzen der Nutzung mehrerer Prozesse für Nebenläufigkeit hervor, da die Kommunikation zwischen Prozessen teuer ist.
- Als Alternative werden Threads genannt, also Prozesse, die sich denselben Speicher teilen, doch sie können komplexe Probleme wie Race Conditions und Deadlocks verursachen.
- Tony Hoares Aufsatz von 1978, "Communicating Sequential Processes", schlug vor, dass Threads Warteschlangen oder Kanäle verwenden, um sich gegenseitig Nachrichten zu senden, was mehrere Vorteile bietet, darunter prozessähnliche Isolation und einfacheres Debugging.
- Rusts Standardbibliothek enthält Kanäle unter
std::sync::mpsc::sync_channel.
- Für Probleme, die ein hohes Maß an Nebenläufigkeit erfordern, etwa ein Webserver mit Verbindungen zu Zehntausenden von Nutzern, reichen Threads jedoch möglicherweise nicht aus.
- Rust verwendet für solche Situationen das Modell "async/await": Wenn eine Funktion als asynchron markiert ist, gibt sie ein Future oder Promise zurück, auf dessen Ergebnis gewartet werden kann.
- Trotz seiner Vorteile bringt asynchrones Rust Herausforderungen mit sich, etwa die Notwendigkeit, den Compiler davon zu überzeugen, dass alles in Ordnung sein wird. Das kann schwieriger sein als bei nativen Threads.
- Als Lösung wird die Nutzung von "atomarer Referenzzählung" oder Arc vorgeschlagen, doch das ist kein Allheilmittel, da dadurch Probleme entstehen können, die denen eines Garbage Collectors ähneln.
- Der Artikel schließt mit der Einschätzung, dass Rust trotz seiner Stärken in anderen Bereichen möglicherweise nicht das optimale Werkzeug für User-Space-Software mit massiver Nebenläufigkeit ist.
1 Kommentare
Hacker-News-Kommentare