2013-10-17 138 views
0

我有一个Linux上的嵌入式系统的C小代码。我目前正在每50ms执行一次算法。睡眠一个过程,并唤醒它

我被建议使用nanosleep,但它会使我的算法执行的时间比每50ms长一点:timetorun(algorithm) + nanosleep(50ms)

所以我去了警报选项,而不是修改一个易变的变量。要等待报警,我使用一个空闲的忙碌循环。我不喜欢我采取的方法,我认为必须有更好的方式来做到这一点。有什么建议么?也许一种使用闹钟唤醒nanosleep()的方法?

回答

0

如果可用,请使用timerfd。如果不是,则分叉第二个进程作为计时器。定时器以期望的时间间隔写入管道。无论哪种方式,您的进程都会阻塞从管道读取数据,并在接收到一个字节时开始执行。