有效的空闲线程实现是什么样的?

What does a valid idle thread implementation look like?

众所周知,忙等待是不好的,因为它会浪费 CPU 时间。但是在现代操作系统中做了什么来使 OS 空闲线程正常工作呢? 只是忙着等待吗?如果是这样,如何节省电力?什么是最好的方法?

是否可以让一个像空闲线程一样的忙碌等待,而不是在一个紧密的循环中做类似 thread_yield() 的事情?

这是一个非常宽泛的问题,所以没有办法给你一个非常具体的答案;我会给你一些一般的指导方针。

一般来说,在现代程序中,您可能会使用某种类型的线程池库来为您管理线程。这些通常有某种类型的 idle_timeout ,之后线程将被关闭;如果他们需要添加一些线程,他们会启动新线程。

如果您要管理自己的线程生命周期,可以采用多种方法。也许像等待事件或信号这样的事情可能适用于您的情况。在这种情况下,正在分配工作的线程可以引发一个事件来唤醒线程。如果这看起来太复杂,那么像睡一段时间这样简单的事情比循环检查要好。

根据您的情况,其他一些方法可能有意义。但总的来说,您肯定想尝试利用已经编写好的库来处理这种情况,而不是尝试从头开始编写一个库。


啊,谢谢你的澄清评论。看起来这里 http://en.wikipedia.org/wiki/System_Idle_Process 中有一些关于该主题的有趣信息。如果该信息是准确的,那么听起来像是 O/S 具体的;一些 windows 版本只是在循环中调用暂停指令,而后来的版本调用硬件特定指令以导致时钟速度降低或其他节能措施。