【发布时间】:2017-03-10 02:50:14
【问题描述】:
最近我正在研究这个问题。我已经阅读了 fs 源代码,发现 fs.readSync() 和 fs.read() 之间的唯一区别是
// async vrsion
var req = new FSReqWrap();
req.oncomplete = cb;
binding.stat(pathModule._makeLong(path), req);
我读过一些文章说阻塞和非阻塞 fs api 调用之间的区别是异步版本将在新的 v8 工作线程中运行。
当我读到这个article - daveeddy written 关于异步与同步的 fs 系统调用性能时。结论是异步和同步调用同一个系统调用。但是异步在工作线程上运行,同步在主线程上运行。
我的问题是我注意到下面的评论说
文件系统操作是 Node.js 中最后使用阻塞系统调用(open、preadv、pwritev)的操作之一
在哪里可以找到 fs 真实系统调用?这个评论是对还是错?
这是回答我的问题“为什么 fs 是 NodeJS 中唯一提供同步调用的 I/O 库”的关键点
我真的很好奇。感谢您的耐心和进一步的建议。
【问题讨论】:
标签: node.js asynchronous