【发布时间】:2011-07-28 09:06:40
【问题描述】:
当我在 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
这是有问题的,因为我们使用一些计算后报告的剩余时间,而且它们也太大了。
这是一个已知问题吗? (谷歌搜索不起作用。)有人有好的解决方法吗?
【问题讨论】: