Node 的所有文件系统 IO 操作都有异步/同步版本,但我想知道:Node.js 中如何实现异步文件 IO 以对本地文件进行操作?我自己正在摆弄 libevent,它使用 react 器模式,如 Node,但我读到 using evented IO on local files is pointless ,因为它们始终可读可写,因此可以立即对其进行操作。
如果这是真的,这些方法之间有什么区别,至少对于本地文件来说是这样?
最佳答案
查看“understanding node.js io loop”文章中的“I/O 成本”表。本地文件 IO 不是即时的。在内部,它是在异步文件 api 不可用的系统 (Linux) 上使用阻塞文件操作和 libuv 线程池以及在可用的情况下使用内核级异步调用(例如,Windows 上的 IOCP)来实现的。
我还没有看到不同系统上同步与异步文件io的基准,但值得知道的是线程池调度does add some penalty通常池大小与 CPU 数量相对应,这对于 cpu 绑定(bind)的异步任务很有用,但对于异步文件 IO 模拟可能不是最佳选择。
我的猜测是,与同步版本相比,平均而言,即使基于线程池的异步 FS 也会导致更好的服务器延迟/响应能力,尤其是在大文件上。
关于javascript - Node.js 中的本地文件的异步文件 IO 方法如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17059832/