【发布时间】:2011-04-28 10:08:15
【问题描述】:
我发现了几个关于同一主题但与一般变量(值和引用类型)相关的问题 this question 接受的回答说:
CLI 规范的第 I 部分第 12.6.6 节规定:“当对一个位置的所有写访问都被访问时,符合标准的 CLI 应保证对不大于本机字大小的正确对齐的内存位置的读写访问是原子的。大小一样。”
引用变量(即类)是指针,等于原生字长,但我有几个疑问:
是否保证引用位于正确对齐的内存位置?
我不明白最后一部分。这是什么意思? “...当对一个位置的所有写访问的大小相同时。”
简而言之,在下面的代码中,obj2是否保证在循环的每次迭代中都有效?
class MyClass
{
private OtherClass m_Object;
void Thread1()
{
while(true)
{
OtherClass obj1 = new OtherClass();
m_Object = obj1;
}
}
void Thread2()
{
while (true)
{
OtherClass obj2 = m_Object;
// Is obj2 guaranteed to be valid?
obj2.Check();
}
}
}
【问题讨论】:
标签: c# .net multithreading visual-studio-2010