Sobes.tech
Назад к вопросам
Middle
8

Что такое горутины? Чем отличаются от обычных потоков (threads)?

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

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

sobes.tech AI

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

Отличия от обычных потоков (threads):

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

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

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

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