Я пишу библиотеку потоков, и при планировании потоков мне нужно знать, как долго они были готовы. Каждый экземпляр Thread имеет timeval _timeInReady
поля, и когда я нажимаю экземпляр в готовую очередь я называю эту функцию:gettimeofday возвращает отрицательное значение
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), когда я проверяю это поле через некоторое время.
Любые идеи? Благодаря!
Что именно вы наблюдаете, что заставляет вас думать, что у вас есть отрицательные числа? Если это заявление печати, пожалуйста, покажите его. Если это проверка отладчика, сообщите нам об этом подробнее. –
Это был отладчик, затмение – yotamoo