Документация для usleep утверждает, что вызов usleep(0)
не влияет. Тем не менее, в моей системе (RHEL 5.2), выполняющей небольшие фрагменты кода на С++ ниже, я обнаружил, что на самом деле он имеет тот же эффект, что и usleep(1)
. Можно ли ожидать этого, и если да, то почему существует несоответствие между документацией и тем, что я вижу в реальной жизни?
Иллюстрация A
код:
#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