I doubt if this is totally true. Upto Go version 1.4, the process would use only 1 core&#x2F;cpu per process by default, but you could change it by:<p><i>numCPU := runtime.NumCPU()</i><p><i>ret := runtime.GOMAXPROCS(numCPU)</i><p>From 1.5 the process the default value of MAXPROCS is total CPUs on the machine.<p>So  its not &#x27;reduced parallelism compared to C&#x2F;C++&#x27; rather the concurrency infrastructure (channels etc) makes it transparent to the programmer. I don&#x27;t have to worry about creating a threadpool myself like C&#x2F;C++ and Java. So overall there is a net gain, in my understanding. Am I wrong any where in this?