Вопрос проверяет понимание того, как Go управляет параллельным выполнением на уровне CPU.
GOMAXPROCS задает максимальное количество логических процессоров, которые могут одновременно выполнять goroutine. Это не ограничение на число goroutine, а на параллельное выполнение CPU-задач. По умолчанию значение равно числу доступных CPU. Изменить его можно программно или через переменную окружения.
GOMAXPROCS управляет уровнем параллелизма, а не конкурентности.
Определение:
GOMAXPROCS — это параметр runtime, определяющий, сколько goroutine могут выполняться одновременно на CPU.
В модели планировщика:
Каждый P (processor) соответствует одному логическому CPU.
GOMAXPROCS определяет количество P.
Только goroutine, привязанные к активным P, выполняются параллельно.
runtime.GOMAXPROCS(2)
Это означает:
Одновременно выполняются не более двух CPU-задач.
Остальные goroutine будут ждать в очереди.
Частые случаи:
Тонкая настройка производительности.
Ограничение нагрузки на CPU.
Тестирование конкурентного кода.
Нужно понимать:
Goroutine могут быть тысячи.
Параллельно выполняются только GOMAXPROCS.
GOMAXPROCS ограничивает количество одновременно работающих CPU-задач и влияет на уровень параллелизма программы.