0

各ループの実行時間を usleep で 10ms にするようにしていますが、10ms を超えることもあります。

この問題を解決する方法がわかりません。この場合、 usleepgettimeofdayを使用するのは適切ですか?

私が見逃したものを見つけるのを手伝ってください。

結果: 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);
    }
}
4

3 に答える 3