我在struct thread_info
计算某个事件时添加了一个变量。这是在来宾操作系统中完成的。
在虚拟机的执行过程中,我不时地从我的主机中读取这些变量。
我观察到有时我得到了预期的值,但有时我读取了垃圾值。我认为 GCC 正在优化我的变量,而我正在读取的内存处于垃圾状态。
我想知道可能的预防方法。
关闭内核的 GCC 优化是毫无疑问的,因为我的目标是根据我计算的事件加速虚拟机。
#pragma optimize("",off)
使其效率降低,因为那样我将不得不将我的事件计数代码(只有 2 行)分解为一个函数。我计算的这个事件经常发生。
有没有我可以使用的#pragma 技术?
使我的变量 volatile 有助于解决问题吗?
谢谢