2010-02-26 34 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。