Назад к вопросам
Касперский
Junior — Middle
78
Чем отличается выполнение кода в горутине от работы системного потока на уровне операционной системы?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Горутины в Go — это легковесные потоки, управляемые рантаймом Go, а не операционной системой. Основные отличия:
- Легковесность: Горутины занимают очень мало памяти (обычно несколько килобайт стека), в то время как системные потоки требуют гораздо больше ресурсов.
- Планирование: Планировщик горутин встроен в рантайм Go и распределяет горутины по системным потокам, что позволяет эффективно использовать CPU.
- Создание и переключение: Создание и переключение между горутинами происходит быстрее, чем между системными потоками, так как не требует переключения контекста ядра ОС.
Пример:
func main() {
go func() {
fmt.Println("Горутина")
}()
fmt.Println("Основной поток")
time.Sleep(time.Second) // Ждем завершения горутины
}
Здесь горутина запускается внутри процесса, но не соответствует отдельному системному потоку напрямую.