Sobes.tech
Назад к вопросам
Junior — Middle
78

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

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

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

sobes.tech AI

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

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

Пример:

func main() {
    go func() {
        fmt.Println("Горутина")
    }()
    fmt.Println("Основной поток")
    time.Sleep(time.Second) // Ждем завершения горутины
}

Здесь горутина запускается внутри процесса, но не соответствует отдельному системному потоку напрямую.