使用 Monitor.Wait(object obj) 时,应该对 obj 使用什么?在这个article http://www.yoda.arachsys.com/csharp/threads/我正在阅读 .NET 中的多线程,作者实例化了一个新的 Object() 仅用作监视器锁。这是您在实践中应该做的,还是监视两个或多个线程之间共享的实际变量更典型?
是的,我通常会锁定专门为此目的创建的新对象。我还确保它是私有的和静态的not一个类型对象。同样重要的是要认识到,您并不是真正“锁定”变量或对象,而是将锁用作阻止在多个线程上执行代码块的令牌。
锁定this
(如果使用 C#,则为当前实例)不太受欢迎,因为任何有权访问该实例的代码都可能对其加锁,从而增加了死锁的可能性。通过创建自己的锁对象,您可以完全控制自己。
这是一篇内容丰富的文章 http://bytes.com/topic/c-sharp/answers/249277-dont-lock-type-objects关于锁定解释了其中一些背后的原因。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)