相关疑难解决方法(0)

在原子操作中测试和减少?

我刚刚追查了一个令人讨厌的bug,这基本上就是竞争条件.为了论证,我们假设一个非常简单的文档结构{ _id : 'XXX', amount : 100 }.

这些文档中有数百个存在于集合中,并且由多个编写者访问,这些编写者有效地尝试将任何值减少但从不低于0.目前,这是通过两个查询完成的:

  • 第一个查询确定当前金额.
  • 仅当数量大于要减去和减少当前数量的值时,才会触发第二个查询.

当多个线程同时执行此操作时,这当然容易导致混乱.但是有没有办法在原子操作中做到这一点?我test-and-set在文档中找不到类似操作的内容.

如果相关:运行这些操作的代码是运行多个Node.js实例和mongodbnpm包的服务器端JavaScript .

javascript mongodb node.js

2
推荐指数
1
解决办法
576
查看次数

标签 统计

javascript ×1

mongodb ×1

node.js ×1