Dot-Net

當 Interlocked 類可用時,為什麼在 .NET 中使用 SyncLocks 進行簡單操作?

  • November 7, 2012

我在 VB.NET 中做簡單的多執行緒已經有一段時間了,並且剛剛進入我的第一個大型多執行緒項目。我一直使用該Synclock語句完成所有操作,因為我認為沒有更好的方法。

我剛剛了解了這個Interlocked類 - 它使它看起來好像這一切:

Private SomeInt as Integer
Private SomeInt_LockObject as New Object

Public Sub IntrementSomeInt
   Synclock SomeInt_LockObject
       SomeInt += 1
   End Synclock
End Sub

可以用單個語句替換:

Interlocked.Increment(SomeInt)

這會在內部處理所有鎖定並修改數字。這比為簡單操作編寫自己的鎖要簡單得多(執行時間更長或更複雜的操作顯然仍然需要自己的鎖)。

當我可以使用這些方法完成相同的事情時,我是否有理由使用專用鎖定對象滾動自己的鎖定Interlocked

你是對的;Interlocked應該在這裡使用,並且會比SyncLock.

但是,這個Interlocked類並不為人所知。

但是,在某些情況下您需要使用SyncLock並且Interlocked無濟於事。

這是因為沒有人知道它。傳播這個詞!

引用自:https://stackoverflow.com/questions/2534547