Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net:分配对象引用是否是原子的(即线程安全的)?_.net_Multithreading - Fatal编程技术网

.net:分配对象引用是否是原子的(即线程安全的)?

.net:分配对象引用是否是原子的(即线程安全的)?,.net,multithreading,.net,Multithreading,假设我有一个变量x(类型myClass),它最初是null,还有一些赋值 x = myObject 在某个背景线程中只发生一次 当从主线程访问时,x是否保证始终包含null或myObject?或者是否可能x很快就包含一些无效数据?如果类型引用的大小与CPU的本机字大小相同,则分配将是原子的(并且在您描述的场景中是安全的) 事实上,(手头没有参考资料)我相当确定类型ref的大小始终与本机CPU字大小相同。来自(尽管它涉及的主题有所不同),我得出结论,分配是atomc。检查本文这里的参考资料:分区

假设我有一个变量
x
(类型
myClass
),它最初是
null
,还有一些赋值

x = myObject
在某个背景线程中只发生一次


当从主线程访问时,
x
是否保证始终包含
null
myObject
?或者是否可能
x
很快就包含一些无效数据?

如果类型引用的大小与CPU的本机字大小相同,则分配将是原子的(并且在您描述的场景中是安全的)


事实上,(手头没有参考资料)我相当确定类型ref的大小始终与本机CPU字大小相同。

来自(尽管它涉及的主题有所不同),我得出结论,分配是atomc。

检查本文这里的参考资料:分区I,CLI规范第12.6.6节规定:
当对一个位置的所有写访问大小相同时,符合要求的CLI应保证对正确对齐的内存位置(不大于本机字大小)的读写访问是原子的。
。即使没有引用规范,你也是第一个提供正确答案的人。@Darin Dimitrov:不确定你为什么删除了你的答案,毕竟它是正确的。我删除了我的答案,因为它没有提供任何比你的答案更有用的信息。