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