Сколько горутин может одновременно выполняться на одном логическом процессоре в Go?

На одном P планировщика Go в каждый момент исполняется одна горутина с Go-кодом. Остальные могут быть готовы или ждать; это не то же самое, что число горутин в программе.

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

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

На одном P планировщика Go в каждый момент исполняется одна горутина с Go-кодом. Остальные могут быть готовы или ждать; это не то же самое, что число горутин в программе.

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

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

На одном P планировщика Go в каждый момент исполняется одна горутина с Go-кодом. Остальные могут быть готовы или ждать; это не то же самое, что число горутин в программе.

GOMAXPROCS ограничивает число P и одновременно исполняемого Go-кода. Заблокированные на вводе-выводе горутины не занимают выполнение P постоянно. Системные вызовы и cgo усложняют подсчёт потоков ОС, поэтому нельзя говорить, что всего существует не больше GOMAXPROCS потоков. Если под логическим процессором имеется в виду CPU hardware thread, уточните термин у интервьюера.

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

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

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

Подробнее