在多线程环境中更新表的最佳做法

时间:2019-12-17 15:47:26

标签: c# mysql multithreading locking mutex

我在更新表时遇到了一些问题,该表可以跟踪多线程环境中的某些用户余额。

我在服务中有多个类,需要读取当前余额并添加/减去一定金额(我还在分类帐表中保留了添加/订阅的详细记录)。

避免并发问题(存储错误的余额等)的最佳实践是什么

  • 我应该尝试与某个隔离级别保持一致(将数据库引擎的责任委托给委派)吗?
  • 我应该使用某种公共锁定以便在不同的类之间共享它吗?
  • 我应该负责通过明细表更新余额表吗?

附录 并发问题:

a. Thread "A" read value: 1 (time t)
b. Thread "B" read value: 1 (time t)
c. Thread "A" updates value (adding 5): 6 (time t+1)
d. Thread "B" updates value (adding 3): 4 (time t+2)
e. The final value is 4 when it should be 9

0 个答案:

没有答案