Sobes.tech
Junior — Middle

Kas on kohustuslik, et Go automaatselt vahetaks täitmise konteksti goroutine'ide vahel?

sobes.tech AI

Vastus AI-lt

Go keeles toimub automaatne konteksti vahetamine goroutine'ide vahel, kuid mitte klassikalises preemptive multitasking mõttes, nagu operatsioonisüsteemides.

Goroutine'id on kergekaalulised niidid, mida haldab Go jooksuaeg. Go scheduler vahetab täitmist goroutine'ide vahel, et tõhusalt kasutada süsteeminuure.

Omadused:

  • Go scheduler kasutab koostööalust multitaskingut: goroutine peab andma kontrolli, näiteks kutsudes blokeerivaid operatsioone või funktsioone, mis teevad selgelt yieldi.
  • Alates Go 1.14 versioonist on lisatud piiratud preemption tugi, mis võimaldab scheduleril katkestada goroutine'i, kui see kaua kontrolli ei paku.

Seega toimub konteksti vahetamine goroutine'ide vahel automaatselt ja arendajale läbipaistev, kuid mõningate omadustega, mis erinevad klassikalistest operatsioonisüsteemidest.