Linux 2.6.26 システム (Debian 5.0.5) で短いタイムアウトを設定しsetitimer
、設定値を (getitimer
または別ので) クエリすると、設定した値よりも高い値が返されます。setitimer
#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
いくつかの計算の後に残っていると報告された時間を使用しているため、これは問題があり、それらも大きすぎます。
これは既知の問題ですか? (グーグルは機能しませんでした。)誰かが良い回避策を持っていますか?