关于lock死锁的问题

IE11下面经常卡到爆 IE11下面经常卡到爆 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

void test(int i)
{
lock (this)
{
if (i > 10)
{
i--;
test(i);
}
}
}


面试题:当i>10时,是否会发生死锁,为什么?
假定test(15)
单步发现 当i--到10时,执行完了lock块以后,程序又会跳回去执行迭代的test(i),这时候i又会自加,直到14后,完成整个调用。
不太明白为什么会这样,lock应该只能锁引用类型,不能锁值类型的,否则会发生死锁,是这样吗?
(最好的做法是声明一个private的实例,然后锁它,这个我知道)

...全文

相关推荐

评论 6
收藏 已收藏
分享
返回顶部
IE11下面经常卡到爆
C# 111,129 成员 642,538 内容