NodeJS如何处理异步文件IO
How does NodeJS handle async file IO?
使用NodeJS已经有一段时间了,我一直想知道node内部是如何处理文件操作的。
考虑以下伪代码:
initialize http server
on connection:
modify_some_file:
on success:
print "it worked"
让我们考虑两个用户A &B .试图几乎同时访问该页。让我们进一步假设A是第一个连接的,然后发生以下情况:
- 与
- NodeJS初始化文件操作,并告诉操作系统一旦完成就通知
这就是我想知道的:假设,文件操作还没有完成,B连接了,node做了什么?当文件仍处于"被修改"的过程中时,它如何以及何时访问文件?
我希望我的问题有点清楚;)期待您的回答!
哎呀,Node不会在意的。
至少在Unix上,对同一个文件有多个写入器是完全合法的。有时这不是问题(假设您的文件由固定大小的记录组成,其中写入器#1写入记录X,写入器#2写入记录Y,使用X !== Y),有时则是问题(同样的例子:当两个写入器都想写入记录X时)。
在Node中,由于I/O操作"轮流",问题得到了缓解,但我认为仍然存在两个写入器相互妨碍的可能性。程序员有责任确保这种情况不会发生。
对于Node,您可以使用fs
操作的*Sync()
版本(但这些操作将在操作期间阻塞您的应用程序),使用追加模式(我认为这只是原子到某些写入大小,并且取决于您的要求,如果追加实际上有用),使用某种形式的锁定,或者使用类似于队列的东西,其中写入操作将放在队列上,并且有一个队列消费者来处理写入。
相关文章:
- jar文件的后台进程,如何在进程结束时异步通知我
- 异步HTTP(ajax)请求在脚本标记中有效,但在js文件中无效
- 使用仪器从iOS自动化测试文件进行异步调用
- javascript文件的异步加载超时
- 异步上传多个文件,而不会相互踩踏
- cordova文件异步检查写入
- 为什么Chrome似乎异步请求Javascript文件
- 使用 jQuery File Upload + Carrierwave + Rails 4 启用异步文件上传
- HTML5异步文件上传,上传的流总是无效的
- 用于异步文件上传的PHP代码
- Node.js/Express异步文件上载
- 仅在IE 9和10中进行异步文件上载
- 在Node.js中,异步文件IO方法是如何为本地文件工作的?
- NodeJS如何处理异步文件IO
- 对于node.js中的本地文件,我应该使用异步文件IO方法而不是同步方法吗?
- 使用mootools进行异步文件上传
- 读取异步文件时EMFILE错误
- Javascript for循环异步文件执行
- Node.js异步文件I/O
- 节点.js模块单元测试 - 使用 sinon.js 存根异步文件系统调用