Sobes.tech
Middle

Was sind Goroutinen in Go und wie unterscheiden sie sich von System-Threads?

sobes.tech KI

Antwort von AI

Горутины в Go — это лёгкие потоки выполнения, управляемые рантаймом Go, а не операционной системой. Они позволяют запускать функции параллельно с минимальными затратами по памяти и времени на переключение контекста.

Отличия от системных потоков:

  • Горутины намного легче по ресурсам (обычно стартуют с нескольких килобайт стека, который динамически растёт).
  • Планировщик горутин встроен в рантайм Go и эффективно распределяет их по системным потокам.
  • Переключение между горутинами происходит быстрее, чем между системными потоками.

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

func sayHello() {
    fmt.Println("Hello from goroutine")
}

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