所以,这不是我的代码,并且已经被缩短以展示其行为,但它给出了非常意外的结果。
我有一个类中的两个函数和一个锁。
object mylock = new object();
List<string> temp = new List<string>();
Func1(string)
{
lock(mylock)
{
temp.Add(string);
}
}
Func2()
{
lock(mylock)
{
temp.ForEach(p => Func1(p));
}
}
现在,我知道这没有意义,但是当调用Func2时,Func1不应该死锁吗?在我们的情况下,它会执行。谢谢。