I just learned that Node.js crown jewel libuv uses blocking system calls for file operations. The asynchronous behavior is implemented with threads! That raises two questions (I only care about Unix):
- Why is it not using the non-blocking filesystem calls like it does for networking?
- If there are one million outstanding file reads, it probably does not launch one million threads... What does libuv do??