Miks on vale kasutada terminit 'kerge niidid' korutinate jaoks?
sobes.tech AI
Vastus AI-lt
Termin "kerge voolud" korutinate jaoks on mitmel põhjusel ebatäpne:
-
Looduslik erinevus: Voogud (threads) on süsteemiobjektid, mida haldab operatsioonisüsteem, omades oma virna ja täitmise konteksti. Korutinaadid on kasutajaobjektid, mis rakendavad koostööd tegevat mitme ülesande täitmist ühe voolu sees.
-
Ümberlülitamise mehhanism: Voogusid vahetab operatsioonisüsteemi ajastaja, mis nõuab kontekstivahetuse kulusid. Korutinaadid vahetuvad selgelt koodis (yield, suspend), mis on palju odavam.
-
Paralleelsus vs konkurents: Voogud võivad töötada paralleelselt mitmel tuumal, korutinaadid tavaliselt ühes voolus, pakkudes konkurentsi, kuid mitte paralleelsust.
-
Resursid: Voogud nõuavad süsteemsete ressursside (virn, kirjeldajad) eraldamist, korutinaadid on minimaalsete lisakuludega, kuna need on lihtsalt objektid ja olekud mälus.
Seetõttu tuleks korutinaid pidada eraldi asünkroonse programmeerimise mehhanismiks, mitte "kergete voogudena".