Ven*_*tta 13 linux x86 assembly
我在其他人的代码中看到了asm("暂停"),我想知道它是做什么的.代码由Linux上的g ++编译.
这行是在另一个线程中的循环中,如果发生更新,它会不断轮询.我怀疑它会让程序在再次轮询之前暂停一下,但我想知道(1)我的猜测是否正确(2)为什么有必要暂停?我们运行代码的机器有很多处理器,我的线程完全只是继续轮询它.
tou*_*uko 17
基本上称为旋转循环,或忙等待.它将消耗尽可能多的CPU资源.这会浪费CPU处理能力并增加功耗.
通过放置暂停指令,你会暗示处理器"这是一个旋转循环".这迫使处理器不要太聪明以进行不必要的预测(优化).此外,在某些情况下(例如超线程),它可以释放CPU时间用于其他事情.
| 归档时间: |
|
| 查看次数: |
3792 次 |
| 最近记录: |