Sobes.tech
Назад к вопросам
Principal
30

Что такое горутины в Go? В чём разница между горутиной и потоком ОС?

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

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

sobes.tech AI

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

Отличия горутины от потока ОС:

  • Лёгковесность: горутины занимают гораздо меньше памяти (обычно несколько килобайт), тогда как потоки ОС — значительно больше.
  • Планирование: горутины планируются планировщиком Go внутри процесса, а не ОС, что даёт более быструю и эффективную смену контекста.
  • Масштабируемость: можно запускать тысячи и даже миллионы горутин одновременно, что невозможно с потоками ОС из-за ограничений ресурсов.

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

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

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