http://dave.cheney.net/2015/08/08/performance-without-the-event-loop
Goroutines
Rather than relying on the kernel to manage their time sharing, goroutines
are cooperatively scheduled. The switch between goroutines only happens at
well defined points, when an explicit call is made to the Go runtime
I'm not an expert, but this looks to be the expected behaviour to me. If
you have GOMAXPROCS=8 and you tie up 8 goroutines with infinite loops, then
there is nothing left to service requests. They are spinning the cpus
without any kind of context switching points. This kind of behaviour has
been me
### What version of Go are you using (`go version`)?
go 1.6.2 mac/amd64
### What operating system and processor architecture are you using (`go
env`)?
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/data/apps/go"
GORACE=""
GOROOT="/usr/local/go"
GOTOOL
What version of Go are you using (go version)?
go 1.6.2 mac/amd64
What operating system and processor architecture are you using (go env)?
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/data/apps/go"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr