News for hackers. Stuff that matters.
Re:Why you can have millions of goroutines but only thousand... by leaveyou on Tuesday October 09, 2018 @03:51AM (#18174057)
AFAIK when a goroutine "calls write" (on a channel or on a socket, stream, mutex etc).. and the write "is blocked" it yields the execution and the scheduler can activate something else.. which can be a reader goroutine (after all the writers are blocked for example). So there's no deadlock as long as you have at least one reader for any writer.
Re:Why you can have millions of goroutines but only thousand... by gpderetta on Tuesday October 09, 2018 @05:13AM (#18174383)
That requires the underlying syscall to support an async or non blocking mode though. Disk io or stat doesn't on linux for example. The usual alternative is some sort of background pool for blocking tasks (which adds non trivial overhead), or, where supported by the OS, scheduler activation.
Re:Why you can have millions of goroutines but only thousand... by leaveyou on Tuesday October 09, 2018 @06:11AM (#18174611)
You are right, see Synchronous System Calls in

https://www.ardanlabs.com/blog/2018/08/scheduling-in-go-part...