Miért helytelen a 'könnyű szálak' kifejezés használata a korutinok esetében?
sobes.tech MI
Válasz az MI-től
A "könnyű szálak" kifejezés a coroutine-ok esetében több okból is helytelennek tekinthető:
-
Természeti különbség: A szálak (threads) rendszerobjektumok, amelyeket az operációs rendszer kezel, saját veremmel és végrehajtási kontextussal. A coroutine-ok felhasználói objektumok, amelyek kooperatív multitaskingot valósítanak meg egyetlen szálon belül.
-
Átváltási mechanizmus: A szálakat az operációs rendszer ütemezője váltogatja, ami kontextusváltási költségekkel jár. A coroutine-ok explicit módon váltanak a kódban (yield, suspend), ami sokkal olcsóbb.
-
Párhuzamosság vs. Verseny: A szálak több magon párhuzamosan futtathatók, a coroutine-ok általában egy szálon belül működnek, versenyt biztosítanak, de nem párhuzamot.
-
Erőforrások: A szálak rendszererőforrásokat (verem, leírók) igényelnek, a coroutine-ok minimális overhead-költséggel rendelkeznek, mivel egyszerű objektumok és állapotok a memóriában.
Ezért a coroutine-okat külön aszinkron programozási mechanizmusként kell kezelni, nem pedig "könnyű szálakként".