Что означает ограничение процессоров в рантайме Go

«Что означает ограничение процессоров в рантайме Go» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Ограничение процессоров (GOMAXPROCS) определяет максимальное количество операционных системных потоков, которые могут одновременно выполнять код Go. По умолчанию равно количеству логических CPU.

Пример:

runtime.GOMAXPROCS(2) // Ограничиваем до 2 потоков

Нюансы:

  • Не влияет на количество горутин (их может быть больше)
  • Слишком малое значение может снизить производительность
  • Слишком большое может увеличить накладные расходы на переключение контекста

Изменять GOMAXPROCS обычно требуется редко, так как Go эффективно управляет этим сам.