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
ничего не меняет.