GOMAXPROCS контролирует максимальное количество потоков ОС, доступных для одновременного выполнения горутин. Это определяет степень параллелизма в твоей Go-программе, ограничивая количество горутин, которые могут выполняться одновременно на разных процессорных ядрах.
runtime.Gosched() — это функция планировщика, которая добровольно освобождает текущую горутину, позволяя планировщику Go запустить другие ожидающие горутины. Главное — эта функция не приостанавливает и не паузирует горутину, она просто отпускает управление, чтобы другие горутины могли выполняться.
GOMAXPROCS устанавливает лимиты на распределение ресурсов, а runtime.Gosched() управляет поведением планировщика горутинGOMAXPROCS влияет на глобальный параллелизм на уровне системы; runtime.Gosched() влияет на локальный поток выполнения конкретной горутиныGOMAXPROCS для настройки производительности под количество процессорных ядер; используй runtime.Gosched() для улучшения отзывчивости и честного распределения процессорного времени между горутинами// Устанавливаем параллелизм на 2 потока ОС
runtime.GOMAXPROCS(2)
// Отдаём управление другим горутинам
runtime.Gosched()
Думай о GOMAXPROCS как об управлении ёмкостью инфраструктуры, а о runtime.Gosched() как о механизме кооперативного планирования, который помогает справедливо распределять процессорное время между горутинами.
GOMAXPROCS напрямую контролирует максимальное количество горутин, которые можно создать в программе Go, в то время как runtime.Gosched() ограничивает, как долго каждая горутина может выполняться перед вытеснением.
Новый — ещё не проверен сообществом
Вы