Если GOMAXPROCS=2 и запущены два бесконечных цикла с математическими операциями, будут ли выполняться другие горутины?

Если GOMAXPROCS=2, это значит, что планировщик Go может одновременно использовать 2 OS-потока для выполнения горутин.

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

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

Если GOMAXPROCS=2, это значит, что планировщик Go может одновременно использовать 2 OS-потока для выполнения горутин.

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

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

Если GOMAXPROCS=2, это значит, что планировщик Go может одновременно использовать 2 OS-потока для выполнения горутин.

Если запущены два бесконечных цикла с интенсивными математическими операциями, они займут оба потока полностью, так как не делают блокирующих вызовов или операций ввода-вывода.

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

Для решения такой ситуации нужно либо уменьшить нагрузку в этих циклах, добавить точки, где горутины вызывают runtime.Gosched() или делают блокирующие операции, либо увеличить GOMAXPROCS, чтобы дать больше потоков для планировщика.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку