日期:2014-05-16  浏览次数:20652 次

在线等 一个简单的linux定时器问题!
一般的定时器在主线程设置
比如说10S
然后在while循环中,主调用需要花5秒钟来执行,这样再等5秒就可以执行定时器的调用了

但是假如while循环中的主调用所花的时间超过10S了,这个时候是打断它去执行定时器调用
还是继续执行完主调用

描述不太清楚,欢迎追问

在线等

------解决方案--------------------
可以把主调用保护起来吧

sigprocmask(SIG_BLOCK)
主调用
sigprocmask(SIG_UNBLOCK)
------解决方案--------------------
这是设计问题,自己想办法。

如果逻辑会卡10秒,那你还是单独启一个定时器线程吧。
------解决方案--------------------
mutex+cond做。然后用pthread_cond_timedwait设置超时时间,再判断返回值是否代表超时。
然后每次循环都重新计算超时值。