我正在查看Visual C++ 的 _ReadWriteBarrier 内在文档中的这段文字:
在 Visual C++ 编译器的过去版本中,_ReadWriteBarrier 和 _WriteBarrier 函数仅在本地强制执行,不会影响调用树上的函数。在 Visual C++ 2005 及更高版本中,这些函数在调用树中一直强制执行。
我了解障碍在函数中的作用,但“调用树”似乎暗示foo()
调用函数的函数bar()
可以知道是否bar()
包含障碍。在 VC2005 中实际改变了什么来启用这个......调用约定/ABI,编译器完成的一些全局分析,还是什么?