繁体   English   中英

如何阻止线程进入nop或低功耗状态,而不是将自身切换出处理器

[英]How to block a thread into nop or low power status instead of switch itself outof processor

我正在编写一个用户空间程序,我想在其中某个时候“阻塞”线程。 如果我使用类似互斥的功能,则线程将被移出处理器。 我想要的是让线程保持进程状态,而不会在低功耗状态或循环nop操作中调用上下文切换。 并且在某个时间,另一个线程可能会将其“唤醒”或从nop或低功耗状态“解除阻止”,然后继续执行。 我可以使用任何功能或库吗?

这是一个很好且有效的问题。 像您描述的那样的自旋循环可以使用pause指令,以使成对的超线程具有更多资源,并实现节能优化。 例如

while(condition) _mm_pause();

如果评估条件消耗了不必要的资源,请重复几次pause 例如 :: spin_mutex使用退避算法,其中每次失败的条件检查都会导致下一次评估之前的pause迭代次数加倍。

另请参阅此博客

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM