我有一个类型集合字段的类.
问题:
lock(this),我是否也有效锁定了收藏?lock(this)或创建一个SyncRoot对象lock(SyncRoot)呢?jas*_*son 12
不要lock上this.可能是其他人也将该实例用作lock对象的情况.使用专门指定的lock对象.
1)如果我锁定(这个),我是否也有效地锁定了收藏?
没有.
2)什么更有效,做锁(this)或创建一个SyncRoot对象并做锁(SyncRoot)?
高效?专注于语义. lock坚持this是危险的.不要这样做.性能差异(如果有的话)并不重要.
说真的,这类似于询问,什么会让我更快到达目的地,在高速公路上以错误的方式行驶100英里/小时,还是走路?
一直用lock(_syncRoot).
_syncRoot私人领域在哪里(只需要成为一个对象).
这在效率方面没有区别,但你最好拥有一个你可以控制的私人领域来锁定.如果你锁定this,另一个对象也可能锁定它.
看看为什么锁(这个){...}不好?为了更好的解释.另外看一下关于lock 的msdn文章.
通过锁定集合,您无法阻止其被更改.你可能有一个误解,就是锁没有做任何特别的事情来阻止那个对象被改变,它只有在每个关键代码都调用锁时才有效.
| 归档时间: |
|
| 查看次数: |
4774 次 |
| 最近记录: |