Goroutines - это легкие процессы, которые автоматически распределяются по времени на один или несколько потоков операционной системы по времени выполнения Go. (Это действительно классная функция Go!)
Предположим, что у меня есть параллельное приложение, такое как веб-сервер. В моей гипотетической программе много чего происходит, без большого количества несогласованных (Amdahl Law).
Похоже, что количество используемых в настоящее время потоков операционной системы по умолчанию равно 1. Означает ли это, что используется только один ядро ЦП?
Если я запустил свою программу с помощью
runtime.GOMAXPROCS(runtime.NumCPU())
обеспечит разумное использование всех ядер на моем ПК?
Есть ли какая-либо "параллельная слабинка" из-за использования еще более используемых потоков ОС, например. через некоторые эвристические
runtime.GOMAXPROCS(runtime.NumCPU() * 2)
?