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 …
-
-
Go is not m:n in the way that Scheduler Activations and Solaris envisaged them. Go is M:1 with a library-managed thread pool for making blocking I/O requests, similar to how event libraries (eg libuv) manage blocking.
-
So more accurately, it is user-level threading with asynchronous and explicit management of 1:1 threads to back both the user threads and kernel execution. Simple terms and Twitter limitations make describing the nuance of all of these difficult.
- 14 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.