【发布时间】:2019-09-29 10:04:28
【问题描述】:
我有一个整数文件,比如 10。
我的 nodejs 应用程序的每个 http 请求都从文件中读取整数,加 1 并写回结果:
fs.readFile(..., result => ...fs.writeFile(..., result + 1) );
如果两个 http 请求几乎同时到达,是否有可能同时读取 10 和写入 11,或者文件最终总是包含 12?
如果不是后者,应该如何解决它,使其始终如此?
【问题讨论】:
-
一种可能的解决方案是 readFileSync/writeFileSync ... 或者您自己设计的一些锁定机制
-
您能否将整数存储在缓存中,该缓存在每次请求时递增,并定期写入文件?
-
@JaromandaX 没有以“rw”模式打开文件已经序列化访问它了吗?
标签: javascript node.js file http concurrency