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

Hei*_*nzi 7 .net multithreading

比方说,我有一些变量x(类型的myClass),它最初是null一些分配

x = myObject
Run Code Online (Sandbox Code Playgroud)

在某些后台线程中恰好出现一次.

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

Mit*_*eat 6

如果类型引用的大小与CPU的本机字大小相同,则赋值将是原子的(在您描述的方案中是安全的).

实际上,(没有参考手)我很确定类型ref总是与原生CPU字大小相同.

  • 以下是参考:CLI规范的第I部分第12.6.6节:`符合要求的CLI应保证在对一个位置进行所有写访问时对不大于本机字大小的正确对齐的内存位置的读写访问权限是原子的大小相同.即使没有引用规范,您也是第一个提供正确答案的人. (4认同)
  • 我删除了我的答案,因为它没有提供除答案之外的任何其他有用信息. (2认同)