C语言 监控/ Mwait多个地址的指令?



我已经验证了Monitor/Mwait指令在监视单个地址时的用法。但是我想知道它是否可以同时监控多个地址。同时可以监控多少个地址?

例如,我尝试用下面的代码监视变量a和变量b,我发现处理器可以在a或b发生变化时唤醒。是否有关于如何使用monitor/Mwait来监控多个地址的官方说明?

monitor(&a, 0, 0);
monitor(&b, 0, 0);
mwait(0, 0);

一次只能监控一个地址。执行MONITOR指令将替换先前被监视的地址。

它不监视单个字节地址,但是;它是一个范围。通过CPUID可以发现范围的大小。它通常是64字节(单个缓存行)。这就解释了为什么你观察到它同时触发了a和b。

最新更新