Sobes.tech
Back to questions
Middle+
7

Чем горутины отличаются от потоков ОС?

Companies where asked
WaterWal

Answer from AI

sobes.tech AI

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

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

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

package main
import (
    "fmt"
    "time"
)

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

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

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