关于lock死锁的问题
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的实例,然后锁它,这个我知道)
...全文
相关推荐
C#笔试题之同线程Lock语句递归不会死锁
例如,线程A等待线程B释放资源,而线程B等待线程A释放资源,这样就会出现死锁。现在,回到Lock语句递归的问题。当调用test方法时,如果i>10,会发生死锁吗?答案是不会。下面是理由。
创建SP_WHO_LOCK死锁信息临时表然后执行 exec sp_who_lock.SQL
创建SP_WHO_LOCK死锁信息临时表,查询数据库死锁信息,方便解决数据库锁库问题。
C#中lock死锁实例教程
**lock (this) 问题**: 当你使用`lock (this)`来锁定对象时,实际上是在锁定当前实例。
SQLSERVER死锁总结
死锁是 SQL Server 中的一种非常严重的问题,需要我们格外小心和认真地对待。只有了解死锁的原理和排查方法,才能更好地排查和解决死锁问题。
Python中死锁的形成示例及死锁情况的防止
了解死锁的形成原因以及如何预防是确保程序稳定运行的关键。首先,让我们通过一个简单的死锁示例来理解这个问题。


