sleep()是以秒为单位的,要想延迟一个较小的时间,就需要用到usleep()。
另外还有个nanosleep(),用法好像很复杂。
usleep可能很难保证时间精度。我写了一段测试代码
#include <stdio.h>
#include <unistd.h>
#include <sys/time.h>
int main(void)
{
int i;
struct timeval tvTotal;
struct timeval tvBegin, tvEnd, tvSub;
tvTotal.tv_sec = 0;
tvTotal.tv_usec = 0;
for (i = 0; i < 100; i++)
{
gettimeofday(&tvBegin, NULL);
usleep(1000); // 1000 us(microsecond/微秒) = 1 ms(毫秒)
gettimeofday(&tvEnd, NULL);
timersub(&tvEnd, &tvBegin, &tvSub);
tvTotal.tv_sec += tvSub.tv_sec;
tvTotal.tv_usec += tvSub.tv_usec;
printf("%d\n", tvSub.tv_usec);
}
printf("try to usleep 1000 us 100 times, average of result is: %l