如何允許在不鎖定的情況下從多個線程同時調用某個方法,但是在調用其他方法時它會鎖定在哪裏?.Net Synclock只讀更新時的方法
例子:
Private DataLock As New Object()
Private Function GetInfo() As String
SyncLock DataLock
'Read existing data and return a String
End SyncLock
End Function
Private Sub UpdateData()
SyncLock DataLock
'Update/Change existing Data
End SyncLock
End Sub
如何修改上面的代碼,以便:
UpdateData()
調用時始終觸發鎖,鎖本身和GetInfo
GetInfo()
不鎖本身(所以它可以在多個線程上同時運行),但它會鎖定UpdateData
,直到完成
對於這樣的事情,你可以使用信號量。我不太瞭解他們如何告訴你,但它給了你一些谷歌。 – dwilliss
您可能會看看'ReaderWriterLockSlim'類。它專門用於允許多個讀者或一個作者。 – jmcilhinney
@jmcilhinney謝謝,我相信'ReaderWriterLockSlim'是一個很好的解決方案 –