据我所知,lock
语句会不加选择地锁定任何试图执行此代码块的后续实例的代码。
我需要基于当前用户(由userCode表示)锁定代码块。如果具有不同userCode
的用户尝试执行代码块,则必须让其通过。但是,如果具有相同userCode
(先前已锁定)的用户尝试执行操作,则必须停止该操作,直到另一个实例释放它为止。我如何实现此条件锁定?
private async Task PerformShop(string clientCode){
lock(clientCode){ //if other user with the same clientCode has locked the block, this current user has to wait. If not, it has to perform code the block.
performCreditValidation();
performShop();
}
}
白色,是的,您可以通过应用程序和Web与同一用户访问。想象同一位用户从应用程序和网络登录,然后他们同时在网上购物。他们两个都已经执行了信用验证,但是其中一个比另一个更早地进入商店,这可能是一个问题,因为我们基于可用信用来允许商店。
所以您在Web / API开发中遇到问题?在这里,锁[
作为在线商店,您可能甚至需要处理一些额外的问题-访客可以登录或不登录就可以浏览和使用购物车。但是,一旦他们登录,他们的登录前购物车将被取消。如果Wich登录到其他设备上,可能会导致Marges的破坏。]