Coroutinen
Kurz: Coroutinen sind Funktionen, die sich mittendrin anhalten und später an derselben Stelle fortsetzen lassen.
Genauer: Anders als Threads schaltet nicht das Betriebssystem um, sondern der Code gibt freiwillig die Kontrolle ab (kooperatives Multitasking). Dadurch sind sie sehr leichtgewichtig: Zehntausende laufen in einem Thread.
Im Detail
- Schlüsselwörter:
yield(Python-Generatoren),await(async/await),suspend(Kotlin), Goroutinen (Go, vom Laufzeitsystem verteilt). - Stärke: Viel Warten auf Netzwerk oder Datenbank, ohne dass Threads herumstehen.
- Schwäche: Eine Coroutine, die rechnet statt zu warten, blockiert alle anderen im selben Thread. Rechenlast gehört in Prozesse oder Threads.
- Ablauf: Eine Ereignisschleife (Event Loop) startet Coroutinen, merkt sich ihren Zustand und setzt sie fort, sobald ihr Ergebnis bereit ist.
- Unter der Haube: Der Compiler macht daraus meist einen Zustandsautomaten.
Siehe auch: async/await