在Node.js中防止竞争条件

时间:2014-03-14 01:10:52

标签: node.js mongodb concurrency redis

我在Node.js中遇到了这样的竞争条件:

  • 请求A到达,读取会话。
  • 请求B到达,读取会话。
  • 请求B在响应结束时修改会话。
  • 请求A写入会话。 B的修改将丢失。

有什么方法可以解决这个问题?我正在使用Connect与session中间件和connect-mongo中间件将我的会话存储在MongoDb中。我愿意在必要时修改中间件,但我更喜欢使用现有的解决方案,因为在并发问题方面,我不是最有经验的程序员。

对我来说最重要的是解决方案必须超越一个流程。我已经研究了各种信号量/互斥量的可能性,但它们似乎都没有扩展。

对于那些建议我围绕这个问题编写我的客户端代码的人 - 围绕竞争条件进行编码一直是我的M.O.直到现在,但这导致我的代码很笨拙并容易破解。

0 个答案:

没有答案