2010-02-26 85 views
7

比方說,我有一些變量x(的myClass型),這是最初null和一些後臺線程一些分配.net:分配一個對象引用原子(即線程安全)?

x = myObject 

發生的歷史恰好一次

確保x從主線程訪問時總是包含nullmyObject?或者有可能x很快包含一些無效數據?

+2

查看本文http://msmvps.com/blogs/luisabreu/archive/2009/06/29/multithreading-hardware-atomicity.aspx – 2010-02-26 12:35:43

回答

6

如果類型引用的大小與CPU的本機字大小相同,那麼賦值將是原子的(並且在描述的場景中是安全的)。實際上,(沒有對手的引用)我很確定type ref的大小始終與本機CPU字大小相同。

+4

以下是參考資料:分區I,CLI規範的第12.6.6節:一個符合CLI的應該保證,當所有的寫操作訪問的位置都是相同的大小時,對正確對齊的不大於本地字大小的內存位置的讀寫訪問是原子的。即使沒有引用規範,你也是第一個提供正確答案的人。 – 2010-02-26 12:40:13

+0

@Darin Dimitrov:不知道爲什麼你刪除了你的答案,畢竟這是正確的。 – 2010-02-26 13:58:20

+2

我刪除了我的答案,因爲它沒有提供任何其他有用的信息,而不是您的答案。 – 2010-02-26 14:19:51

1

this(雖然它涉及到有點不同的話題)我得出結論,作業 atomc。