> So a CPU-heavy inner loop calculating everything will fail to preempt
They fixed that in Go a while ago.
https://go.dev/doc/go1.14#runtime