0

如果您有这样的构造,根据链接的文章( https://msdn.microsoft.com/en-us/magazine/jj883956.aspx段落阅读介绍)似乎是可能的......

var temp = myRef;
temp.DoSomething1();
//... at a later time
temp.DoSomething2();

...通过阅读介绍,该临时变量已被抖动优化掉。

问题是:有没有办法保证我真的使用参考的副本而不是对原始参考的引入阅读。由于在我的程序中 myRef 可以通过分配一个新对象来随时更改,因此我需要确保在整个函数期间每当我需要对对象执行某些操作时访问同一个对象。

关于什么:

  • temp = Thread.VolatileRead(myRef)
  • temp = Volatile.Read(myRef)
  • temp = CompareExchange (myRef, null, null);

抖动确实会多次调用其中一个读取操作而不是创建引用的副本,是否还会发生这种情况?

4

0 回答 0