Kernel threads for IO do not work great (I'd be happy to provide more info), which is why async IO is needed. Not using an M:N model to keep compatibility with C is certainly reasonable, but goroutines and an M:N model do have many advantages over kernel threads for doing IO.https://twitter.com/pcwalton/status/1140983747379990528 …
-
-
My guess is due to complexity, and the difficulty of making the right choices while maintaining compatibility with the pthread interface. I don't see this to be in conflict with kernel threads being bad for IO. Why would we need async IO if this was not the case?
-
My understand is that async I/O is useful primarily because you can avoid the overhead of creating and destroying thread stacks. Also because the async programming model is more convenient in some cases (e.g. cancellation).
- 4 more replies
New conversation -
-
-
Complexity. The dynamic coupling between user and kernel contexts, and controlling the kernel thread pool caused edge-case driven nightmares. Great set of comments that walk through the complexities in Solaris, but I can't find it now.
-
That would seem to argue against M:N systems like Go, right?
- 16 more replies
New conversation -
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.