Senior
Какво е горутина? Как е устроена?
sobes.tech AI
Отговор от AI
Горутината е лек поток за изпълнение в езика Go. За разлика от системните нишки, горутините се управляват от рантайма на Go и имат много малък стек (започва с няколко килобайта и може да расте динамично). Това позволява да се стартират стотици хиляди горутини едновременно с ниски разходи.
Структура на горутината:
- При създаване на горутина (с оператора
go) планировчикът на Go я поставя в опашката с готови задачи. - Рантаймът на Go използва планиране M:N: M системни нишки (OS нишки) обслужват N горутини.
- Горутините превключват контекста на ниво рантайм, което е по-бързо от превключването между системните нишки.
- Всяка нишка (M) може да изпълнява няколко горутини (N), превключвайки между тях при блокировки или по необходимост.
Пример за създаване на горутина:
func sayHello() {
fmt.Println("Здравей от горутината")
}
func main() {
go sayHello() // стартираме горутина
time.Sleep(time.Second) // чакаме, за да се изпълни горутината
}