volatile列表中的对象是否继承了volatile的行为?

时间:2014-05-28 11:02:25

标签: c# compiler-optimization

将Dictionary类标记为volatile,将此行为应用于字典中的所有成员吗? 或更好。通过字典指针访问字典项,它是否具有相同的易失性行为? (意思是不在uProc寄存器中缓存)。

volatile Dictionary<int,string> MyDictionary;
MyDictionary["somekey"] - is this volatile ?

1 个答案:

答案 0 :(得分:4)

情况可能并非如此。 CLR必须知道给定的加载或存储是否应该在访问发生的代码点处是易失性的。字典中的代码不知道字典是否是从易失性位置引用的。事实上,这是怎么回事:

volatile Dictionary d1 = new ...;
Dictionary d2 = d1;

这里只有一本字典。字典现在是否在内部volatile?无法说出因为&#34;传播的概念&#34;波动是不一致的,毫无意义。