我正在编写一个线程库,并且在调度线程时我需要知道它们已经准备好多长时间。每个 Thread 实例都有一个timeval _timeInReady
字段,当我将实例推送到就绪队列时,我调用此函数:
void Thread::startTiming() {
gettimeofday(&_timeInReady, NULL);
}
当我想检查_timeInReady
我调用的当前值时:
double Thread::getTimeInReady() const {
return TIME(_timeInReady.tv_sec,_timeInReady.tv_usec);
}
时间在哪里#define TIME(a,b) ((a*1000000) + b)
所以我得到了以微秒为单位的总时间。
我的问题是,由于某种原因,当我在一段时间后检查该字段时,我得到了疯狂的负值(例如 -10293843)。
有任何想法吗?谢谢!