Kapitel 19. Werkzeuge für Gleichzeitigkeit

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Vor fast zwanzig Jahren, in den frühen 2000er Jahren, erreichten wir das Ende des Moore'schen Gesetzes für das Leistungswachstum von Single-Core-CPUs. Wir haben die Leistung durch eine steigende Anzahl von Kernen und Servern weiter erhöht und die vertikale Skalierung durch eine horizontale ersetzt. Das Multicore-Problem tauchte auf, als Entwickler/innen damit kämpften, robuste Anwendungen zu schreiben, die die Gleichzeitigkeit über CPU-Kerne und über einen Cluster von Maschinen hinweg nutzen.

Gleichzeitigkeit ist nicht einfach, denn sie erfordert in der Regel einen koordinierten Zugriff auf gemeinsame, veränderbare Zustände. Low-Level-Bibliotheken bieten Sperren, Mutexe und Semaphoren für die Verwendung auf demselben Rechner, während andere Tools die Verteilung über einen Cluster ermöglichen. Wenn der Zugriff auf veränderbare Zustände nicht richtig koordiniert wird, führt dies häufig zu Zustandsbeschädigungen, Wettlaufsituationen und Sperrkonflikten. Für Cluster-Computing musst du Netzwerkbibliotheken und Programmiersprachen hinzufügen, die effizient und einfach zu verwenden sind.

Diese Probleme weckten das Interesse an FP, als wir erfuhren, dass die Probleme der Multithreading-Programmierung durch Unveränderlichkeit und Reinheit weitgehend umgangen werden können. Außerdem erlebten wir eine Renaissance ...

Get Scala programmieren, 3. Auflage now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.