[問題] 不用signal的timer如何實現?

看板C_and_CPP作者 (攻城蝨)時間11年前 (2012/10/28 18:42), 編輯推噓2(204)
留言6則, 2人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux 問題(Question): 之前寫過的程式,凡是需要timer的我都用settimer去做 但是最近碰到幾個signal handler reentrant的問題,所以想把這種做法改變 但是,試過while + sleep感覺不是很準確 尤其是要執行的task變多之後,時間的偏差值會越來越大 請問有更好的方法嗎? 補充說明(Supplement): 希望目標是能夠做到像是linux的at一樣,能夠指定間格給定任務 但我實在是找不到atd的code阿... 不需要給我程式碼,只需要講解個做法的框架就好 先謝過各位了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.226.74

10/28 20:43, , 1F
你需要有一個thread專門管理所有的timer
10/28 20:43, 1F

10/28 20:43, , 2F
集中在同一個thread來處理能有效減少不同task的timery
10/28 20:43, 2F

10/28 20:44, , 3F
產生的誤差
10/28 20:44, 3F

10/28 20:44, , 4F
至於這個thread的sleep要多久,取決於你能接受的誤差值
10/28 20:44, 4F
那再請問,這個thread是負責計時還是也要做事? 如果做事拖很久會使其他的task delay嗎?

10/28 23:16, , 5F
負責計時 如果你拿它來作事你沒辦法預計它要跑多久@@
10/28 23:16, 5F

10/29 09:54, , 6F
unix network programming 明明有教 thread timer 怎麼做
10/29 09:54, 6F
感謝 我知道怎麼做了 THX ※ 編輯: Severa 來自: 114.32.226.74 (10/29 21:33)
文章代碼(AID): #1GZGmiDS (C_and_CPP)