NodeJS如何处理asynchronous文件IO?

在NodeJS上工作了一段时间,我一直在想如何在内部处理文件操作。

考虑到下面的伪代码:

initialize http server on connection: modify_some_file: on success: print "it worked" 

让我们考虑几乎同时尝试访问该页面的两个用户A和B. 让我们进一步假设A是第一个连接,那么发生以下事情:

  • A连接
  • NodeJS初始化文件操作,并告诉操作系统完成后通知操作系统

这是我想知道的:假设文件操作还没有完成,B连接,节点做什么? 如何在什么时候访问文件,还在进行“被修改”?

我希望我的问题有些清楚;)期待你的答案!

AFAIK,Node不会在意。

至less在Unix上,将多个编写者放在同一个文件中是完全合法的。 有时候这不是问题(比如说你的文件由固定大小的logging组成,其中写入者#1写入loggingX,写入者#2写入loggingY,X!== Y),有时它是(同样的例子:当这两个作者都想写入来loggingX)。

在Node中,由于I / O操作“轮stream”,问题得到了缓解,但是我认为两个作者还是有潜力相互争夺。 程序员要确保不会发生。

使用Node,你可以使用fs操作的*Sync()版本(但是在操作过程中会阻塞你的应用程序),使用append模式(这只是primefaces,直到我认为的某些写入大小,这取决于你的要求如果追加实际上是有用的),可以使用某种forms的locking,或者使用类似队列的地方,将写入操作放入队列,并且有一个队列使用者来处理写入。