Ответ
Да, может. В Go горутины (goroutines) — это легковесные потоки, управляемые рантаймом, а не ОС. Они работают поверх реальных потоков ОС (обычно 1 поток на ядро).
Горутины эффективно мультиплексируются на небольшое количество потоков ОС. Например, даже на 4-ядерном CPU можно запустить тысячи горутин. Рантайм Go автоматически распределяет их по доступным потокам.
Пример:
func main() {
for i := 0; i < 10000; i++ {
go func() {
// работа горутины
}()
}
// горутины выполняются конкурентно
time.Sleep(time.Second)
}
Ключевое отличие от системных потоков — горутины потребляют меньше памяти (стек ~2KB) и переключаются быстрее, так как переключение происходит в пользовательском пространстве.