Ответ
Да, можно, но с осторожностью. В Go планировщик управляет горутинами автоматически, но есть несколько способов повлиять на его работу:
-
runtime.GOMAXPROCS(n)– устанавливает максимальное количество ядер CPU, которые могут использоваться (по умолчанию равно количеству логических ядер). -
runtime.Gosched()– уступает текущий поток планировщику, позволяя другим горутинам выполняться. -
Привязка к потоку ОС – через
runtime.LockOSThread(), но это редко нужно.
Пример:
runtime.GOMAXPROCS(1) // ограничиваем использование одним ядром
go func() {
runtime.Gosched() // явно уступаем выполнение
}()
Важно: Чрезмерное вмешательство может снизить производительность. Обычно лучше довериться планировщику Go.