2013-10-17 137 views
0

我有一個Linux上的嵌入式系統的C小代碼。我目前正在每50ms執行一次算法。睡眠一個過程,並喚醒它

我被建議使用nanosleep,但它會使我的算法執行的時間比每50ms長一點:timetorun(algorithm) + nanosleep(50ms)

所以我去了警報選項,而不是修改一個易變的變量。要等待報警,我使用一個空閒的忙碌循環。我不喜歡我採取的方法,我認爲必須有更好的方式來做到這一點。有什麼建議麼?也許一種使用鬧鐘喚醒nanosleep()的方法?

回答

0

如果可用,請使用timerfd。如果不是,則分叉第二個進程作爲計時器。定時器以期望的時間間隔寫入管道。無論哪種方式,您的進程都會阻塞從管道讀取數據,並在接收到一個字節時開始執行。