为什么锁定一种被认为非常糟糕的类型?例如,lock(typeof(DateTime))我理解.net中任何类的静态方法都被认为是线程安全的,而实例成员则不是.因此,在使用DateTime时无需锁定它.我正在阅读的这本书没有解释为什么它只是说它是坏的.任何解释都会很棒.
CLR为每个AppDomain维护每种类型的单个实例(正如Joe在他的回答中指出的那样,有时它们甚至在更广泛的上下文中共享).
由于您无法控制对类型的访问,因此您可能会发现自己无意中阻止或被完全不相关的代码阻止,这些代码也会锁定您的类型.
相反,您通常应该锁定与要锁定的操作(或相关操作)位于同一类中的私有实例,以便您可以控制锁影响和阻塞的内容.(虽然也有一些情况下锁定一些众所周知的同步对象是有意义的,这些对象旨在跨不同的对象使用.)
| 归档时间: |
|
| 查看次数: |
601 次 |
| 最近记录: |