Threads versus Prozesse
Ein Prozess hat eigenen Adressraum. Threads desselben Prozesses teilen den Heap, haben aber eigene Stacks. In Java startet man Threads über Thread oder Executor-Dienste.
Nebenläufigkeit ermöglicht Parallelität auf Mehrkernsystemen, erfordert aber Synchronisation.
Wo gebraucht
Web-Worker-Pools, parallele Requests, Hintergrundjobs. Prozesse isolieren Adressräume (Sicherheit, Crash); Threads teilen Heap und brauchen Synchronisation.
Vertiefung
Prozesse besitzen getrennte virtuelle Adressräume und werden vom Betriebssystem stärker voneinander isoliert. Kommunikation benötigt explizite Mechanismen wie Pipes, Sockets oder gemeinsam eingerichtete Speicherbereiche. Ein Fehler in einem Prozess beschädigt daher nicht ohne Weiteres die Daten eines anderen.
Threads eines Prozesses sehen dieselben Objekte und Ressourcen, besitzen aber eigene Aufrufstapel und Registerzustände. Der Austausch ist dadurch günstig, zugleich entstehen Synchronisationspflichten. Die Wahl hängt von Isolation, Kommunikationsaufwand und der Art der Arbeit ab.
Schwierigkeitsstufen
- Getrennte und gemeinsam sichtbare Zustände unterscheiden.
- Kommunikations- und Fehlerisolationskosten abwägen.
- Eine CPU- oder I/O-lastige Aufgabe einer geeigneten Struktur zuordnen.
Fallstricke
Threads laufen nicht zwingend gleichzeitig, sondern können nur zeitlich verschachtelt werden. Mehrere Prozesse garantieren ebenfalls keine Beschleunigung, wenn Kommunikation oder Ressourcenknappheit dominieren.
Tasks
Card Info
- Topic: Algorithmen und Datenstrukturen
- Difficulty: Beginner
- Completed: 0 users