我在 redhat 6 上做了以下代码片段:
#include <unistd.h>
int main(int argc, char *argv[])
{
while(true)
{
#ifdef SLEEP
sleep(1);
#endif
#ifdef USLEEP
usleep(1000);
#endif
}
return 0;
}
自 1000 us = 1 ms 以来,它应该以完全相同的 maount 睡眠在 redhat 6 上,具有睡眠的那个一直占用 0% 的利用率。有睡眠的人一直在 1.5% 到 2% 之间。我在维护的服务器上有很多这样的东西。关于为什么 usleep 在 redhat 6 上对 cpu 更敏感的任何解释?在 redhat 5 上,我没有看到任何差异。顺便说一句,我看到在 redhat 6 上 CPU 更加敏感。有什么已知的问题吗?