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