请教下关于锁的用法

wapit wapit 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
代码如下:
public ActionResult Index(string uid)
{
var user=GetUser(uid);
if(user==null){
user=CreateUser(uid);//假定耗时1s
}
...
}

以上代码中,由于CreateUser耗时较长,导致高并发情况下CreateUser重复执行,带来问题,于是,做了以下改进:

static object objLock=new object();
public ActionResult Index(string uid)
{
lock(objLock){
var user=GetUser(uid);
if(user==null){
user=CreateUser(uid);//假定耗时1s
}
...
}
}

可这时,带来了另一个问题,大量用户被阻挡在lock外面。

请教:有什么办法,能实现lock的功能,但是允许不同的uid可以同时执行?
...全文

相关推荐

评论 8
收藏 已收藏
分享
返回顶部
wapit
C# 111,129 成员 642,540 内容