Waarom wordt het gebruik van de term 'lichte draden' voor coroutines als onjuist beschouwd?
sobes.tech AI
Antwoord van AI
De term "lichtgewicht threads" voor coroutines wordt om verschillende redenen als onjuist beschouwd:
-
Verschil in aard: Threads (draadjes) zijn systeemobjecten beheerd door het besturingssysteem, met hun eigen stack en uitvoeringscontext. Coroutines zijn gebruikersobjecten die cooperatieve multitasking binnen één thread implementeren.
-
Mechanisme van schakelen: Threads worden door de scheduler van het besturingssysteem geschakeld, wat kosten voor contextwisseling met zich meebrengt. Coroutines schakelen expliciet in de code (yield, suspend), wat veel goedkoper is.
-
Parallelisme vs Concurrerende uitvoering: Threads kunnen parallel op meerdere cores worden uitgevoerd, coroutines meestal in één thread, bieden concurrentie maar geen parallelisme.
-
Resources: Threads vereisen toewijzing van systeemresources (stack, descriptors), coroutines hebben minimale overheadkosten, omdat het gewoon objecten en staten in geheugen zijn.
Daarom moeten coroutines worden beschouwd als een apart mechanisme voor asynchrone programmering, en niet als "lichtgewicht threads".