比方说,我有一些变量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