2011-10-19 16 views
6

C#規範規定讀寫對於32位類型和更小的(以及引用)是原子的。所以如果我在我的類中有一個Int32字段,我知道多個線程可以讀取和寫入它們,並且它們將在運行時處於原子狀態,因此該值始終保持一致(儘管緩存問題是潛在的問題,但這不是重點這個問題)。用於.NET的64位系統上的原子讀取/寫入大小?

這在64位系統上也是這樣嗎?如果我爲64位編譯我的應用程序是否意味着Int64仍被認爲不是原子的?或者我現在可以認爲Int64在讀寫時是原子的,因爲它是爲64位系統編譯和運行的嗎?

+1

如果有疑問,當然,'互鎖' - 但這是一個非常好的問題。 –

回答

3

它應該是相同的(不是原子的) - 值必須正確對齊以允許64位值具有原子讀/寫,但據我所知沒有要求CLR總是以這種方式對齊Int64值。

查看How to guarantee 64-bit writes are atomic?的一些討論。

相關問題