2009/04/23

timer 與 while(1)

連續貼三篇文章,有的寫的很簡單卻搞到很頭痛,還有一個最頭痛的沒貼上來,等整理心得出來後再來與大家分享。這邊講一個被 M$ 氣的半死的一項。

想當然爾,timer() 的單位的 ms, 所以若設定 1ms 與 10ms, 被呼叫的頻率差應該是 10 倍吧?答案是....No!!! 究竟是多少?網路上有人在問要怎樣設定 timer 到微秒的等級,嗚呼哀哉。目前我們測試的 timer 最快也就 60HZ 而已。

因為 timer() 無法達到預期目標,那麼就用 while(1), 又怕吃掉系統資源,以前知道要用 usleep(), 不要說這會讓系統負擔變重,事實上是我們找不到!,後來大膽測試 while(1), 結果卻發現頻率夠高,而且而且,系統負擔竟然出奇的輕!偉哉,M$!

這邊要提醒的是,我說 while(1) 不會造成系統負擔過重的原因不是 OS 排程做的好,而是 while() 裡面做的是 device IO。至於如何調整 sleep() 的時間單位?答案有機會再揭曉

0 意見: