Sobes.tech
Senior
31

Что такое горутина, чем отличается от системного потока?

Компании, где спрашивали
Финтехробот

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

sobes.tech AI

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

Основные отличия горутины от системного потока:

  • Легковесность: системный поток требует гораздо больше памяти и ресурсов ОС.
  • Планирование: горутины планируются планировщиком Go внутри одного или нескольких системных потоков.
  • Коммуникация: горутины обычно взаимодействуют через каналы, что упрощает синхронизацию.

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

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

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