商城系统如何控制限量销售(并发读写)
商城系统一般都有限量销售的商品,那这个“限量”是如何控制的呢?
一想到的就是在下单的时候这样控制:
C# code
//1、读取库商品剩余量num
//2、假设一次购买量都为1
if(num>0){
//update num=num-1;
//转入下单成功页面
}else {
//提示已卖完
}
这样的话在并发数稍多的情况下肯定会出问题,论坛也搜索了下好像一般的建议是对这个代码块加锁控制,
但加锁的话在并发数很高情况下大部分人要等好久才有提示,用自己的双核机子开1000个线程模拟这样操作最多的要等20多秒,这样也不现实吧。
比如商城里的秒杀活动一般都有好多人待秒,这个是怎么处理的呢?有没有人说说啊。
------解决方案--------------------使用事务队列。
------解决方案--------------------
------解决方案--------------------谷哥或者度娘 关键字:悲观并发
------解决方案--------------------用读写锁
------解决方案--------------------行锁,把这条记录锁住。
记得下单的时候2次检查。
------解决方案--------------------应该可以,购物车想去判断,确实很难