gettimeofday - 問題は、ハードウェア クロック (NTP など) を変更すると値が小さくなる可能性があることです Boost - このプロジェクトでは使用できません clock() - 通常は 4 バイトの整数を返します。しばらくすると、負の数が返されます。
私は独自のクラスを作成し、10 ミリ秒ごとに更新することを好みます。そのため、この方法はより柔軟であり、サブスクライバーを持つように改善することもできます。
class MyAlarm {
static int64_t tiempo;
static bool running;
public:
static int64_t getTime() {return tiempo;};
static void callback( int sig){
if(running){
tiempo+=10L;
}
}
static void run(){ running = true;}
};
int64_t MyAlarm::tiempo = 0L;
bool MyAlarm::running = false;
それを更新するには、setitimer を使用します。
int main(){
struct sigaction sa;
struct itimerval timer;
MyAlarm::run();
memset (&sa, 0, sizeof (sa));
sa.sa_handler = &MyAlarm::callback;
sigaction (SIGALRM, &sa, NULL);
timer.it_value.tv_sec = 0;
timer.it_value.tv_usec = 10000;
timer.it_interval.tv_sec = 0;
timer.it_interval.tv_usec = 10000;
setitimer (ITIMER_REAL, &timer, NULL);
.....
setitimer と ITIMER_VIRTUAL および ITIMER_REAL を見てください。
alarm または ualarm 関数を使用しないでください。プロセスが大変な作業を行うと、精度が低下します。