Junior — Middle
Sistemin hansı hissəsində goroutine-lər icra olunur və onların idarə olunması necə həyata keçirilir?
sobes.tech Süni İntellekt
AI-dan cavab
Горутины в Go выполняются на уровне пользовательского пространства, управляются планировщиком (scheduler) рантайма Go. Они не соответствуют системным потокам напрямую, а маппятся на меньший набор потоков ОС.
Планировщик Go распределяет горутины по системным потокам, переключая контекст между ними эффективно и быстро, что позволяет запускать тысячи горутин одновременно с низкими накладными расходами.
Управление горутинами происходит через рантайм:
- Создание горутины — ключевое слово
goперед вызовом функции. - Планировщик решает, когда и на каком потоке ОС выполнять каждую горутину.
- При блокировке горутины (например, на ввод/вывод) планировщик может переключить выполнение на другую горутину.
Пример создания горутины:
func sayHello() {
fmt.Println("Hello from goroutine")
}
func main() {
go sayHello() // запуск горутины
time.Sleep(time.Second) // дать время горутине выполниться
}