猿问

请教,关于每个用户lock的问题

举例,用户购买商品了,那么要扣钱吧,代码这样:


private static object locker = new object();public void Buy()
{    lock(locker)
    {        var member = 获取会员();
       if(member.money>= 商品.价格)
        {
            member.money -=  商品.价格;            //其他操作
            保存会员();
        }
    }
}


这里是一定要用lock的吧?大家是不是也是这么做的。

可是我突然发现用的全局locker,这样的话有多个用户同时购买,那么岂不是只能有1个用户在购买,其他都被阻挡了?这个问题大家是怎么做的啊?


一只萌萌小番薯
浏览 501回答 1
1回答

慕尼黑8549860

private readonly object locker = new object()这样子每个实例都lock自己的locker了,保证同一个实例同时只能有一个线程执行lock内的代码。但不同的类实例可以同时执行操作
随时随地看视频慕课网APP
我要回答