并发处理原创
金蝶云社区-eris
eris
7人赞赏了该文章 760次浏览 未经作者许可,禁止转载编辑于2020年07月01日 18:45:07

说明

在软件开发过程中并发问题往往无法避免,我们软件主要是通过网控来规避并发,网控可以关联具体的操作,也可以在代码中直接调用,下面介绍两种常见规避并发方式。

方式:

  1. 业务后条件方式:既把取到的原始值作为后面执行条件,比如金额为1000,两用户同时取到并且都要扣减100,如果没有做并发规避处理,虽然各扣了100,但数据库还是900,这样一个用户的扣减就被覆盖了。由于事务提交在数据库是有先后的,如果把取到的1000做更新条件,则两个用户同时提交,则必然有个用户提交失败。

  2. 业务前网控方式:创建一张网控表,表中加个唯一性约束,用户在取数的时候向网控表插入一条唯一性约束数据, 用完之后删除网控表中的数据。比如:两个用户同时取数,由于取到的数据是一样的,故产生的唯一性约束也是相同的,它们向网控表中插入数据时必然有个用户失败,这样就确保了多个用户不能同时处理在相同的数据。

赞 7