What are the disadvantages of an M:N threading model (e.g. goroutines)?

Viewed 1263

M:N threading is a model which maps M user threads onto N kernel threads. This enables a large number (M) of user threads to be created, due to their light weight, which still allowing (N-way) parallelism.

This seems like a win-win to me, so why do so few languages/implementations use this threading model? The only examples I am aware of are Go's "goroutines" and Erlang's processes.

What are the disadvantages of M:N threading? Why do other languages not use this threading model that, on the surface, seems so promising?

1 Answers
Related