Горутины работают параллельно или конкурентно?

Горутины в Go по умолчанию работают конкурентно, а не параллельно.

Короткий ответ

Что ответить на собеседовании

Горутины в Go по умолчанию работают конкурентно, а не параллельно. Конкурентность означает, что несколько горутин могут быть запущены и переключаться между собой, но не обязательно выполняются одновременно. Параллелизм же — это одновременное выполнение нескольких горутин на разных ядрах процессора.

Подробный разбор

Ответ с пояснениями

Горутины в Go по умолчанию работают конкурентно, а не параллельно. Конкурентность означает, что несколько горутин могут быть запущены и переключаться между собой, но не обязательно выполняются одновременно. Параллелизм же — это одновременное выполнение нескольких горутин на разных ядрах процессора.

Go runtime планирует горутины на системные потоки (M) и использует пул потоков для выполнения. Если у вас несколько ядер и вы установите GOMAXPROCS > 1, то горутины могут выполняться параллельно на разных ядрах.

Пример:

runtime.GOMAXPROCS(4) // разрешаем использовать 4 ядра

go func() {
    // горутина 1
}()

go func() {
    // горутина 2
}()

Таким образом, горутины — это механизм конкурентного программирования, который при наличии нескольких ядер может обеспечивать и параллелизм.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее