Sobes.tech
Senior

Горутина чист? Чӣ гуна сохта шудааст?

sobes.tech AI

Ҷавоб аз AI

Goroutine — это лёгкий поток выполнения в языке Go. В отличие от системных потоков, горутины управляются рантаймом Go и имеют очень маленький стек (начинается с нескольких килобайт и может динамически расти). Это позволяет запускать сотни тысяч горутин одновременно с низкими накладными расходами.

Структура горутины:

  • При создании горутины (оператор go) планировщик Go помещает её в очередь готовых к выполнению задач.
  • Рантайм Go использует планирование M:N: M системных потоков (OS threads) обслуживают N горутин.
  • Горутины переключаются на уровне рантайма, что быстрее, чем переключение системных потоков.
  • Каждый поток (M) может выполнять несколько горутин (N), переключаясь между ними при блокировках или по необходимости.

Пример создания горутины:

func sayHello() {
    fmt.Println("Привет из горутины")
}

func main() {
    go sayHello() // запускаем горутину
    time.Sleep(time.Second) // ждём, чтобы горутина успела выполниться
}