【发布时间】:2011-11-09 15:23:34
【问题描述】:
我根据网上的一些例子写了一个计时器:
void fun(int i)
{
struct itimerval to;
//do something
signal(SIGALRM, fun);
to.it_interval.tv_sec = 0;
to.it_interval.tv_usec = 0;
to.it_value.tv_sec = 60;
to.it_value.tv_usec = 0;
setitimer(ITIMER_REAL, &to, 0);
}
在 main 函数中,我只调用一次 fun,然后在其中执行一个 while 循环。
该程序表现良好,只是它完全耗尽了 cpu(99% 或 100%),但如果我删除 while 循环,“fun”函数只会被调用一次。我怎样才能保持它被定期调用,同时避免占用 100% 的 cpu?
【问题讨论】:
-
您希望它每 60 秒调用一次 fun?
-
您的问题很可能在您的
while循环中。发布描述情况所需的完整代码。 -
函数本身没问题。向我们展示您的主要产品!
-
在 main 函数中,我只调用一次 fun,然后在那里执行一个 while 循环: int main() { fun(0);而(1);}