ититимервал значения тв - PullRequest
0 голосов
/ 23 марта 2011
int thread_get_time_until_wakeup(int tid){

struct itimerval tv;

int result = getitimer(ITIMER_VIRTUAL, &tv);

int milliseconds;
int a = tv.it_value.tv_sec*1000; 
int b = ceil((tv.it_value.tv_usec)/1000);
cout << a << " " << b <<  " " << a+b << endl; //DEBUG PRINT

return a+b;// num of milliseconds remained;
}

Здесь вы можете увидеть метод, используемый для проверки количества миллисекунд, оставшихся до ITIMER (которое было установлено в предыдущем методе).
Когда я устанавливаю таймер на 2000 миллисекунд, я получаю правильные значения:

a = 2000
b = 0
a+b = 2000

при первой проверке, но по неизвестной причине возвращаемое значение равно 2001!

Что я здесь не так делаю?

Примечание: удаление ceil из b ничего не меняет.

...