documentation for usleep指出,调用usleep(0)无效。但是,在运行以下C++代码片段的系统(RHEL 5.2)上,我发现它实际上似乎具有与usleep(1)相同的作用。这是可以预期的吗?如果是这样,为什么文档与我在现实生活中看到的内容之间存在差异?

展览

代码:

#include <unistd.h>

int main()
{
    for( int i = 0; i < 10000; i++ )
    {
        usleep(1);
    }
}

输出:
$ time ./test
real   0m10.124s
user   0m0.001s
sys    0m0.000s

展览B

代码:
#include <unistd.h>

int main()
{
    for( int i = 0; i < 10000; i++ )
    {
        usleep(1);
        usleep(0);
    }
}

输出:
$ time ./test
real   0m20.770s
user   0m0.002s
sys    0m0.001s

最佳答案

从技术上讲,它应该无效。但是您必须记住,传递的值是最小值,而不是绝对值,因此系统可以自由使用最小的时间间隔。

关于c++ - C++中的usleep(0)在Linux上的效果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12823598/

10-11 09:23