Процесс - изолированный экземпляр программы с собственным адресным пространством. Поток - единица выполнения внутри процесса; потоки делят память процесса. В Go одна программа - один процесс; множество горутин планируются на несколько потоков ОС (M:N). GOMAXPROCS задает макс. число потоков для пользовательского кода. Горутины легче потоков ОС.
runtime.GOMAXPROCS(runtime.NumCPU())