- 论坛徽章:
- 1
|
有这样一个问题:
程序中,需要一个定时器,定期去检查一些东西。。
用 signal(SIGALAM,my_fun);
...
setitimer(ITIMER_REAL,&a,&b);
假设TIMEOUT是1S,可以正常工作。。
问题在于,程序中有另外一个地方,用到了select();比如说TIMEOUT是2S;
当signal()使用信号量 SIGANLAM的时候,select();不到2S就TIMEOUT了;
(相信是因为,select()也是用signal(SIGALAM,select)来计算时间的)
这样就导致了select()不可以正常工作。
而setitimer()的另外2个信号量并不适合我使用。
查了一下,alarm();其实也是使用了同样的信号量来计时的。
QA:linux MS就只提供这2个定时器(?)
QB:这中情况下,还有什么方法可以做一个计数器,而又不影响我的select()的使用呢?
QC:另外开一条线程,让它sleep()一会然后去调用my_fun() ? MS这个可行。
QD:有什么更好的解决方法呢?
谢谢。。。
怀念g_timeout_add(); 呵呵。 |
|