Proposal: Non-cooperative goroutine preemption
So, preemptive green-threads? This seems like a counter-productive and highly complicated re-implementation of what the OS thread model does, but inside the Go runtime.<p>I would very much like for goroutines to remain cooperative. It is much simpler, naturally more performant, and quite easy to reason about. A local implementation of preemptive execution seems like a very high price to pay to only handle a few corner-cases.<p>That is not to say that preemptive scheduling does not have their place: They make a <i>lot</i> of sense at an OS level where independent processes are scheduled, but little sense as an internal green-thread implementation.