Sobes.tech
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.