我尝试使用 usleep 确保每个循环的执行时间为 10 毫秒,但有时会超过 10 毫秒。
我不知道如何解决这个问题,在这种情况下使用usleep和gettimeofday是否合适?
请帮助我找出我错过了什么。
结果:0.0127289 0.0136499 0.0151598 0.0114031 0.014801
double tvsecf(){
struct timeval tv;
double asec;
gettimeofday(&tv,NULL);
asec = tv.tv_usec;
asec /= 1e6;
asec += tv.tv_sec;
return asec;
}
int main(){
double t1 ,t2;
t1 = tvsecf();
for(;;){
t2= tvsecf();
if(t2-t1 >= 0.01){
if(t2-t1 >= 0.011)
cout << t2-t1 <<endl;
t1 = tvsecf();
}
usleep(100);
}
}