.net 在锁内返回有什么区别吗? 样本一 样本二
这些实现之间有什么区别吗 不,返回锁内没有区别。离开锁后,它将不再存在。共享锁对象而不是成员变量有什么好处吗?锁只适用于可以访问同一锁的对象。如果对象A和B有自己的成员变量锁,A将锁定它的锁,B将锁定它的锁。共享同一个锁对象可以减少独立锁的数量,因此可以降低陷入死锁的风险-线程A获取锁1,然后尝试获取锁2。线程B获取锁2,然后尝试获取锁1。如果时机正确,这两个线程将永远等待另一个锁被释放。在使用多个锁时,必须注意,多个锁的所有用法总是以相同的顺序使用锁。随着锁数量的增加,这变得更加困难。一般的经验法则是,每个对象实例只需要一个锁,就可以保护对象实例不被多个线程同时调用。在不同的实例之间共享同一个锁对象也可以起作用,但这可能有点过头了,因为大多数情况下,您试图保护的是对单个对象实例的私有数据的多线程访问。.net 在锁内返回有什么区别吗? 样本一 样本二,.net,locking,.net,Locking,这些实现之间有什么区别吗 不,返回锁内没有区别。离开锁后,它将不再存在。共享锁对象而不是成员变量有什么好处吗?锁只适用于可以访问同一锁的对象。如果对象A和B有自己的成员变量锁,A将锁定它的锁,B将锁定它的锁。共享同一个锁对象可以减少独立锁的数量,因此可以降低陷入死锁的风险-线程A获取锁1,然后尝试获取锁2。线程B获取锁2,然后尝试获取锁1。如果时机正确,这两个线程将永远等待另一个锁被释放。在使用多个锁时,必须注意,多个锁的所有用法总是以相同的顺序使用锁。随着锁数量的增加,这变得更加困难。一般的经
Public _objLock As Object = New Object
Public ReadOnly Property MyObjects() As IEnumerable(Of Object)
Get
SyncLock _objLock
If _myObjects Is Nothing Then
_myObject = LoadMyObjects()
End If
Return _myObjects
End SyncLock
End Get
End Property
Public _objLock As Object = New Object
Public ReadOnly Property MyObjects() As IEnumerable(Of Object)
Get
SyncLock _objLock
If _myObjects Is Nothing Then
_myObject = LoadMyObjects()
End If
End SyncLock
Return _myObjects
End Get
End Property