-
sleep的精度是秒
-
usleep的精度是微妙,不精确
-
select的精度是微妙,精确
struct timeval delay;
delay.tv_sec = 0;
delay.tv_usec = 20 * 1000; // 20 ms
select(0, NULL, NULL, NULL, &delay);
-
nanosleep的精度是纳秒,不精确
-
unix、linux系统尽量不要使用usleep和sleep而应该使用nanosleep,使用nanosleep应注意判断返回值和错误代码,否则容易造成cpu占用率100%。
-
上面提到usleep和nanosleep不精确的实验,参见这里