首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何阻止线程进入nop或低功耗状态,而不是将其本身从处理器中切换出去

如何阻止线程进入nop或低功耗状态,而不是将其本身从处理器中切换出去
EN

Stack Overflow用户
提问于 2014-08-20 18:23:06
回答 1查看 106关注 0票数 0

我正在编写一个用户空间程序,在这个程序中我想在某个时候“阻塞”一个线程。如果我使用互斥类函数,线程就会从处理器中切换出去。我想要的是让线程保持在进程上,而不需要在低功耗状态或循环nop操作中调用上下文开关。在某个时候,另一个线程可以“唤醒”它或者“解除”nop或低功耗状态下的阻塞,并继续执行。我可以使用任何函数或库吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-20 18:50:49

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

代码语言:javascript
复制
while(condition) _mm_pause();

如果评估条件所消耗的资源比必要的多,则重复pause几次。例如,tbb::互斥使用退避算法,每一次失败的条件检查都会导致在下一次评估之前将pause迭代次数增加一倍。

另见这个博客

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25411869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档