私はスレッドライブラリを作成しています。スレッドをスケジュールするときは、スレッドの準備ができている時間を知る必要があります。すべてのスレッドインスタンスにはtimeval _timeInReady
フィールドがあり、インスタンスをレディキューにプッシュすると、次の関数が呼び出されます。
void Thread::startTiming() {
gettimeofday(&_timeInReady, NULL);
}
現在の値を確認したい場合は、次の_timeInReady
ように呼び出します。
double Thread::getTimeInReady() const {
return TIME(_timeInReady.tv_sec,_timeInReady.tv_usec);
}
ここで、TIMEは#define TIME(a,b) ((a*1000000) + b)
、合計時間をマイクロ秒単位で取得するためのものです。
私の問題は、しばらくしてそのフィールドをチェックすると、何らかの理由で、クレイジーな負の値(-10293843など)が発生することです。
何か案は?ありがとう!