Code Bye

多线程向数据库插入数据的加锁解锁问题

用户在活动添加页面添加一个活动,活动名字叫“拆礼盒”,一个活动可以有多个礼盒,每个礼盒又可以设置奖品数量,保存后我们又要自动生成一个兑奖码,有多少奖品就有多少兑奖码;
问题来了,当用户设置奖品数量很大时,比如1000,后台就要循环1000次生成兑奖码然后插入数据库,这个过程是很慢的,本人测试,1条条的插,800条需要15秒左右,使用SQLBulkCopy减少大约一半的时间,但是2000条使用SQLBulkCopy也需要1分钟左右时间,用户能等我也不能忍啊!
果断选择多线程,看起来效果不错,页面立刻提示完成,插入兑奖码的过程在后台默默的执行着,但是一查看数据库发现,插入的兑奖码有重复(理论上是不允许重复的),并且数量与用户填写的不一致,不是多了就是少了,多线程嘛,这是正常现象,但是不知道应该在哪里加锁,怎么加锁,有没有大神指点一下啊!
这是第一个方法,循环礼盒数量准备参数

这是第二个方法,也就是后台线程调用的方法,循环奖品数量,生成兑奖码(SN码)使用SQLBulkCopy插入数据库,哪里需要加锁?


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明多线程向数据库插入数据的加锁解锁问题