Re:Why you can have millions of goroutines but only thousand...
by zbentley on Tuesday October 09, 2018 @02:26PM
(#18178520)
stat() cannot (on platforms I am familiar with) be performed in a selectish/nonblocking way. That call can block forever. Local filesystem access in general is still not async-capable in very important ways.
Re:Why you can have millions of goroutines but only thousand...
by toast0 on Wednesday October 10, 2018 @02:00AM
(#18182365)
Yes, filesystem calls are going to block -- but putting that into a limited threadpool shouldn't deadlock your system -- you can't do a blocking read on a file, waiting for it to be filled by another thread (unless/until you start playing with FUSE, I guess.
To be more specific, most socket calls should be async + selectish, but file system calls would likely be done as synchronous, because async doesn't generally work for that -- anyway limiting the number of outstanding file I/O requests tends to help throughput.