我写了简单的代码(附件),但我不明白为什么某个块上的锁没有锁定范围。
编码 :
object locker = new object();
private void foo(int i)
{
Console.WriteLine( string.Format( "i is {0}", i ) );
lock( locker )
{
while( true )
{
Console.WriteLine( string.Format( "i in while loop is {0}", i ) ) ;
foo( ++i );
}
}
}
我希望在 while 循环中调用 foo 方法将一直等到 locker 将被释放( locker 范围) - 但 foo 的所有调用 ++i 的 arg 都可以进入 locker 块。