Ответ
Go работает параллельно благодаря своей модели горутин и планировщику (scheduler). Горутины — легковесные потоки, управляемые рантаймом Go. Они конкурентны (могут выполняться независимо) и при наличии нескольких ядер CPU — параллельны (одновременно на разных ядрах).
Пример:
func main() {
go func() { fmt.Println("Горутина 1") }()
go func() { fmt.Println("Горутина 2") }()
time.Sleep(time.Millisecond) // Даем горутинам время выполниться
}
Ключевые моменты:
- Конкурентность: Горутины выполняются независимо, переключаясь при блокировке (I/O, каналы).
- Параллелизм: На multi-core CPU горутины работают одновременно.
- Асинхронность: Неблокирующие операции (например,
selectс каналами).
Планировщик распределяет горутины по потокам ОС (обычно 1 поток на ядро).