Sobes.tech
Junior

Какво са горутините?

sobes.tech AI

Отговор от AI

Леките нишки за изпълнение, управлявани от средата за изпълнение на Go. Те се създават с ключовата дума go преди извикването на функция.

Основни характеристики:

  • По-малко използване на памет: Горутина започва с малък стек (обикновено 2 KB), който може да се увеличава или намалява динамично.
  • По-бързо създаване: Създаването на горатина е много по-бързо, отколкото създаването на системен нишка.
  • Мултиплексиране върху системни нишки: Множество горутини могат да бъдат мултиплексирани върху по-малко системни нишки от планировчика на Go.
  • Кооперативно планиране: Горутините не се прекъсват принудително; те доброволно предават управлението на планировчика (например при блокиращи извиквания или явни извиквания runtime.Gosched()).

Пример за създаване:

package main

import (
	"fmt"
	"time"
)

func sayHello() {
	fmt.Println("Здравей от горатина!")
}

func main() {
	go sayHello() // Стартира sayHello като горатина
	fmt.Println("Здравей от основната функция!")
	time.Sleep(1 * time.Second) // За да не приключи основната функция преди горатината
}

Сравнение с нишки:

Характеристика Горутините на Go Нишки на ОС
Управление Среда за изпълнение на Go Операционна система
Използване на паметта Ниско, динамичен стек Високо, фиксиран стек
Създаване Бързо Бавно
Планиране Кооперативно Предварително изпреварващо
Синхронизация Канали, пакет sync Мютекси, семафори на ОС