Sobes.tech
Назад к вопросам
Middle+
3

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

Компании, где спрашивали
Веро Трейс

Ответ от нейросети

sobes.tech AI

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

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

Пример:

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

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

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

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