Javascript NodeJS如何处理异步文件IO?
使用NodeJS已经有一段时间了,我一直想知道node如何在内部处理文件操作 考虑以下伪代码:Javascript NodeJS如何处理异步文件IO?,javascript,node.js,file,asynchronous,io,Javascript,Node.js,File,Asynchronous,Io,使用NodeJS已经有一段时间了,我一直想知道node如何在内部处理文件操作 考虑以下伪代码: initialize http server on connection: modify_some_file: on success: print "it worked" 让我们考虑两个几乎同时访问页面的用户A& B。让我们进一步假设A是第一个连接的,然后发生以下情况: 连接 NodeJS初始化文件操作,并告诉操作系统一旦完成就会收到通知 我想知道
initialize http server
on connection:
modify_some_file:
on success:
print "it worked"
让我们考虑两个几乎同时访问页面的用户A& B。让我们进一步假设A是第一个连接的,然后发生以下情况:
- 连接
- NodeJS初始化文件操作,并告诉操作系统一旦完成就会收到通知
期待您的回答 好了,节点不会在意的 至少在Unix上,将多个写入程序写入同一个文件是完全合法的。有时这不是问题(假设您的文件由固定大小的记录组成,其中writer#1写入记录X,writer#2写入记录Y,X!==Y),有时则是问题(相同的示例:当两个writer都要写入记录X时) 在Node中,由于I/O操作“轮流进行”,问题得到了缓解,但我认为仍然存在两个编写器相互妨碍的可能性。这取决于程序员,以确保不会发生这种情况
使用Node,您可以使用
*Sync()
版本的fs
操作(但这些操作会在操作过程中阻止您的应用程序),使用append模式(我认为它只适用于某些写入大小,如果append确实有用,则取决于您的要求),使用某种形式的锁定,或者使用类似于队列的方法,在该队列中,写入操作将放在队列上,并且只有一个队列使用者来处理写入操作。谢谢您的回答!因此,在修改共享数据时确实存在问题。我个人从未遇到过这个问题,但我从来没有真正确定过这一点。我想我记得有一次,有人试图从多个请求中编写JSON文件,结果JSON全是乱码:)