2012-05-28 53 views
2

我對於多線程一般來說很新穎,我想知道如何鎖定共享整數變量,以便在其他線程讀取/更新時不被其他線程訪問。如何同步鎖定共享整數

當我嘗試做SyncLock myInteger時,出現錯誤:錯誤6'SyncLock'操作數不能是'整數'類型,因爲'整數'不是引用類型。

這裏我的意思

Private Shared myInteger As Integer 

Private Sub MySub() 
    SyncLock myInteger ' This does not work 
    ' read/write a new value to myInteger 
    End SyncLock 
End Sub 

MySub是由類的多個實例來,在多線程

回答

9

我懷疑運行一個簡單的例子,你不完全瞭解什麼SyncLock呢。即使你可以做到這一點(例如,如果Integer是一個參考類型,例如),你不會做到這一點 - 因爲當你替換myInteger的值時,鎖定將是無用的。

你應該要麼鎖別的東西(我個人一般宣佈獨立,只讀變量純粹是爲了鎖定,通常Object類型的緣故),或者如果你想在任何關於myInteger操作時間(而不是一些需要同時讀取或更新多個變量的複合操作),請使用Interlocked類。

+0

您的懷疑是對的,我不完全瞭解SyncLock的功能;-)但是,您的解釋是,它可能是任何微不足道的對象,只是爲了保持鎖定,我想我會得到一個更好的主意。謝謝SO大師;-) – MaxiWheat