【发布时间】:2010-03-09 08:04:51
【问题描述】:
据我了解,在运行时完成 lock(obj) 的代码块之前不会释放锁(因为当块完成时,它会调用 Monitor.Exit(obj)。
有了这种理解,我无法理解以下代码行为背后的原因:
private static string obj = "";
private static void RecurseSome(int number)
{
Console.WriteLine(number);
lock (obj)
{
RecurseSome(++number);
}
}
//致电: RecurseSome(0)
//输出: 0 1 2 3...... stack overflow exception
一定有一些我遗漏的概念。请帮忙。
【问题讨论】:
标签: c# .net multithreading locking