比方說,我有一些變量x
(的myClass
型),這是最初null
和一些後臺線程一些分配.net:分配一個對象引用原子(即線程安全)?
x = myObject
發生的歷史恰好一次。
確保x
從主線程訪問時總是包含null
或myObject
?或者有可能x
很快包含一些無效數據?
比方說,我有一些變量x
(的myClass
型),這是最初null
和一些後臺線程一些分配.net:分配一個對象引用原子(即線程安全)?
x = myObject
發生的歷史恰好一次。
確保x
從主線程訪問時總是包含null
或myObject
?或者有可能x
很快包含一些無效數據?
如果類型引用的大小與CPU的本機字大小相同,那麼賦值將是原子的(並且在描述的場景中是安全的)。實際上,(沒有對手的引用)我很確定type ref的大小始終與本機CPU字大小相同。
以下是參考資料:分區I,CLI規範的第12.6.6節:一個符合CLI的應該保證,當所有的寫操作訪問的位置都是相同的大小時,對正確對齊的不大於本地字大小的內存位置的讀寫訪問是原子的。即使沒有引用規範,你也是第一個提供正確答案的人。 – 2010-02-26 12:40:13
@Darin Dimitrov:不知道爲什麼你刪除了你的答案,畢竟這是正確的。 – 2010-02-26 13:58:20
我刪除了我的答案,因爲它沒有提供任何其他有用的信息,而不是您的答案。 – 2010-02-26 14:19:51
從this(雖然它涉及到有點不同的話題)我得出結論,作業是 atomc。
查看本文http://msmvps.com/blogs/luisabreu/archive/2009/06/29/multithreading-hardware-atomicity.aspx – 2010-02-26 12:35:43