Когда я устанавливаю короткий тайм-аут с помощью setitimer
, а затем запрашиваю установленное значение (с getitimer
или другим setitimer
) в системе Linux 2.6.26 (Debian 5.0.5), я получаю значение выше чем я установил:
#include <sys/time.h>
#include <iostream>
int main() {
struct itimerval wanted, got;
wanted.it_value.tv_sec = 0;
wanted.it_value.tv_usec = 7000;
wanted.it_interval.tv_sec = 0;
wanted.it_interval.tv_usec = 0;
setitimer(ITIMER_VIRTUAL, &wanted, NULL);
getitimer(ITIMER_VIRTUAL, &got);
std::cerr << "we said: " << wanted.it_value.tv_usec << "\n"
<< "linux set: " << got.it_value.tv_usec << std::endl;
return 0;
}
возвращается:
we said: 7000
linux set: 12000
Это проблематично, поскольку мы используем время, оставшееся после некоторых вычислений, и оно слишком велико.
Это известная проблема? (поиск в Google не сработал.) У кого-нибудь есть хороший обходной путь?