Junior — Middle
Как да различим горутината от обикновен поток за изпълнение в операционната система?
sobes.tech AI
Отговор от AI
Goroutine е лек поток за изпълнение, управляван от Go runtime, а не от операционната система. Основните разлики:
- Лекота: Goroutine-ите заемат много по-малко памет (обикновено няколко килобайта стек), докато системните нишки изискват мегабайти.
- Планиране: Goroutine-ите се планират от Go runtime (M:N планировчик), а не от ОС. Това позволява изпълнението на хиляди goroutine-и върху няколко системни нишки.
- Създаване: Създаването на goroutine е много евтино — достатъчно е да напишете
go функция(), докато създаването на системна нишка е по-ресурсоемко.
Пример за създаване на goroutine:
func sayHello() {
fmt.Println("Здравей от goroutine")
}
func main() {
go sayHello() // стартира goroutine
time.Sleep(time.Second) // чакаме, за да се изпълни goroutine
}
Така, goroutine-ите са абстракция над системните нишки, оптимизирана за конкурентно програмиране в Go.