商城系统一般都有限量销售的商品,那这个“限量”是如何控制的呢?一想到的就是在下单的时候这样控制://1、读取库商品剩余量num
//2、假设一次购买量都为1
if(num>0){
//update num=num-1;
//转入下单成功页面
}else {
//提示已卖完
}这样的话在并发数稍多的情况下肯定会出问题,论坛也搜索了下好像一般的建议是对这个代码块加锁控制,
但加锁的话在并发数很高情况下大部分人要等好久才有提示,用自己的双核机子开1000个线程模拟这样操作最多的要等20多秒,这样也不现实吧。
比如商城里的秒杀活动一般都有好多人待秒,这个是怎么处理的呢?有没有人说说啊。

解决方案 »

  1.   


     http://www.cnblogs.com/beniao/archive/2008/06/26/1229934.html
      

  2.   

    研究下最后觉的还是这样比较好,大家看看是不是。//n=购买量
    i = update test set num=num-n where id=1 and num>=n
    if(i>0){
    //提示购买成功
    }else{
    //n=1,提示卖完;n>1提示库存量不足,这样不能提示还有多少库存。
    }1.上面这样依赖于库的更新操作锁。
    2.行级锁和上面的方式基本一样,多了个查询,但也多了个剩余库存信息可供提示。
    3.锁代码的方式应对是最差的了。