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/