Sobes.tech
Назад к вопросам
Senior
7

Что такое горутина? В чем ее легковесность?

Компании, где спрашивали
AstonAston

Ответ от нейросети

sobes.tech AI

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

Легковесность горутин достигается за счёт:

  • Малого начального размера стека, который растёт и уменьшается по необходимости.
  • Управления планировщиком Go, который эффективно распределяет горутины по системным потокам.
  • Отсутствия необходимости создавать отдельные системные потоки для каждой горутины.

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

package main
import (
    "fmt"
    "time"
)

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

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

Таким образом, горутины позволяют эффективно реализовывать конкурентность и параллелизм в Go.