我有一個線程運行在Linux系統上,我需要像possbile一樣以精確的間隔執行。例如。每ms執行一次。Linux,需要精確的編程時序。調度程序喚醒程序
目前,這是通過創建與
timerfd_create(CLOCK_MONOTONIC, 0)
定時器,然後使所期望的睡眠時間在一個結構與
timerfd_settime (fd, 0, &itval, NULL);
一種阻塞讀呼叫所做的是在此計時器其停止執行線程執行並報告喚醒呼叫丟失。
問題是,在較高的頻率下,即使CPU使用率低於10%,系統也會開始丟失最後期限。我認爲這是由於調度程序沒有足夠頻繁地喚醒線程來檢查阻塞呼叫。有沒有一個命令可以用來告訴調度程序在可能的時間間隔內以特定間隔喚醒線程? 由於系統處理許多其他任務,忙等待是一個不好的選擇。
謝謝。
你在實時調度器上運行這個嗎?根據我的經驗,只要你的內核沒有任何壞行爲的驅動程序,它應該足夠好,以便在毫秒量級的時間間隔內完成。 (當然,Linux不是專業的RTOS,並不能保證你永遠不會錯過最後期限。) – 2011-06-10 14:58:21