保护Node.js中的竞争条件

我正在经历Node.js中的竞争条件,如下所示:

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

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

对我来说最重要的是解决scheme必须超越一个过程。 我研究过各种信号量/互斥量的可能性,但似乎没有一个可以扩展。

对于那些build议我围绕这个问题编写我的客户端代码的代码 – 围绕竞争条件编码一直是我的MO直到现在,但这导致我的代码很尴尬,容易中断。