-1

可能重复:
是否有任何理由锁定新对象()以外的东西?

我想知道要锁定的最佳私有静态对象是什么,如果确实有区别的话。

目前,我的大部分代码包括:

private static object m_lockObject = new object();

lock(m_lockObject)
{
    ..critical thread code here
}

我应该使用不同的类型,而不是只锁定一个对象吗?像自定义类实例、int 或字符串等...?还是没关系?

谢谢

4

1 回答 1

1

Lock语句只是底层Monitor对象的语法糖。出于锁定的目的,它使用引用。从监视器的角度来看,它是什么参考并不重要!然而,锁定可能会导致意外的结果,例如,string由于字符串被拦截。由于装箱,锁定值类型会使您异常。

TL;DR 版本 - 你做得很好(如果这static部分真的是你想要的行为)

于 2012-11-29T17:44:21.650 回答