5 ms·
Goroutines are threads. They're just not kernel-level threads. There have been implementations of pthreads that used an M:N model, for instance.
by pcwalton 9y ago
Goroutines are threads. They're just not kernel-level threads.
There have been implementations of pthreads that used an M:N model, for instance.
- weberc2 9y agoFor my information, why is M:N so successful for Go and not for pthreads? Is M:N more practical for systems with a particular kind of garbage collector?
- pcwalton 9y agoIn my opinion, it's because the Go team put a ton of effort into getting M:N working and didn't rigorously evaluate any other alternatives in Go, once moving GC was implemented. I'm not convinced that 1:1 wouldn't have been a perfectly reasonable implementation strategy for Go.
- weberc2 9y agoThis is surprising. It seems like Go gets pretty high praise from all over for its threading model, and it seems like there are relatively few high-performance servers that are built with 1:1. Am I wrong about that? If not, what explains this?