Junior — Middle
Задължително ли е в Go да се извършва автоматична смяна на контекста на изпълнение между горутините?
sobes.tech AI
Отговор от AI
В Go автоматичната смяна на контекста между горутините се случва, но не в класическия смисъл на предварително многозадачно изпълнение, както при операционните системи.
Горутините са леки нишки, управлявани от рантайма на Go. Планировчикът на Go превключва изпълнението между горутините, за да използва ефективно системните нишки.
Характеристики:
- Планировчикът на Go използва кооперативен многозадачен режим: горутината трябва да предаде управлението, например при извикване на блокиращи операции или функции, които явно правят yield.
- От версия Go 1.14 е добавена ограничена поддръжка за preemption, която позволява на планировчика да прекъсне горутина, ако тя дълго време не предаде управлението.
По този начин, смяната на контекста между горутините става автоматично и прозрачно за разработчика, но с някои особености, които се различават от класическите операционни системи.