Sobes.tech
Back to questions
Junior — Middle
95

Как отличить горутину от обычного потока выполнения в операционной системе?

Companies where asked
Lamoda Tech
Фабрика РешенийФабрика Решений
ИннотехИннотех
Mail.ruMail.ru
Самокат Тех
SelectelSelectel
Маском
HyperRus

Answer from AI

sobes.tech AI

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

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

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

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

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

Таким образом, горутины — это абстракция над потоками ОС, оптимизированная для конкурентного программирования в Go.