在线等 一个简单的linux定时器问题!
一般的定时器在主线程设置
比如说10S
然后在while循环中,主调用需要花5秒钟来执行,这样再等5秒就可以执行定时器的调用了
但是假如while循环中的主调用所花的时间超过10S了,这个时候是打断它去执行定时器调用
还是继续执行完主调用
描述不太清楚,欢迎追问
在线等
------解决方案--------------------可以把主调用保护起来吧
sigprocmask(SIG_BLOCK)
主调用
sigprocmask(SIG_UNBLOCK)
------解决方案--------------------这是设计问题,自己想办法。
如果逻辑会卡10秒,那你还是单独启一个定时器线程吧。
------解决方案--------------------mutex+cond做。然后用pthread_cond_timedwait设置超时时间,再判断返回值是否代表超时。
然后每次循环都重新计算超时值。