我想我错过了一些关于正确行为的事情Monitor.Enter
and Monitor.TryEnter
。这是我编写的一段代码,用于将问题与其余代码分开:
object lockObj = new object();
bool result = Monitor.TryEnter(lockObj);
Console.Write(result);
结果总是true
。这里没有什么惊喜。
object lockObj = new object();
Monitor.Enter(lockObj);
bool result = Monitor.TryEnter(lockObj);
Console.Write(result);
但这一次也是true
. So is lockObj
之后锁定Monitor.Enter
或不?请给我一些新的看法。
这是因为您是在同一个线程中执行此操作。
另请记住(MSDN http://msdn.microsoft.com/en-us/library/de0542zz.aspx):
同一线程多次调用 Enter 是合法的
没有它阻塞;但是,必须有相同数量的 Exit 调用
在等待该对象的其他线程解除阻塞之前调用
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)