[問題] Timer 的寫法

看板C_and_CPP作者 (.)時間12年前 (2013/04/30 08:47), 編輯推噓4(406)
留言10則, 5人參與, 最新討論串1/1
我需要寫一個Timer 我本來是用一個tick = sleep(0.01s) 去計算timer經過了多久 每個tick是0.01秒 所以每0.01秒我都能更改 timer 的長度 例如: timer(3 sec) extendTime(7 sec) 從3秒延長7秒變成總共10秒 tick結束之前 我也可以 setNewTime去改變timer的時間 例如: timer(3 sec) 跑了1 sec之後 setNewTime(10s) 所以總共跑了11秒 但是這樣的缺點是 我的timer會不斷的在睡/醒之間做切換去達成timer的計時要求 如果timer數量一多 或是 時間一長 整個CPU就會被拖慢 朋友建議 改成不用tick 而是直接sleep(10秒) 我可以在timer(3s)結束之後 很快的緊接著下一個extendTime(7s)的指令 雖有誤差,但也勉強完成extend的動作,達成總共10s 但是我不想不到該如何在sleep的中途去完成setNewTime這個功能 請板友建議較好的做法 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 204.96.168.3 sean72:轉錄至看板 Programming 04/30 08:47

04/30 09:23, , 1F
可參考最下方的範例 http://tinyurl.com/8hkh7em
04/30 09:23, 1F
※ 編輯: sean72 來自: 204.96.168.3 (04/30 09:32)

04/30 09:32, , 2F
可以送signal提前把sleep結束
04/30 09:32, 2F

04/30 09:33, , 3F
在linux下可以用nanosleep
04/30 09:33, 3F

04/30 14:12, , 4F
這個功能實際上到底有何用途 要睡不睡還一直睡睡醒醒的
04/30 14:12, 4F

04/30 21:33, , 5F
建議用pthread_cond_timedwait
04/30 21:33, 5F

05/01 15:18, , 6F
不了解你是要計時還是要作delay....
05/01 15:18, 6F

05/02 22:57, , 7F
你可以舉例使用這個你想設計出來的所謂"Timer"嗎? 或許
05/02 22:57, 7F

05/02 22:58, , 8F
功能上是delay,而不是timer,也或者是相反,也或者你兩者
05/02 22:58, 8F

05/02 22:59, , 9F
都需要而且要分開設計...
05/02 22:59, 9F

05/02 23:00, , 10F
功能描述不夠清楚,鄉民可幫不了你呀!
05/02 23:00, 10F
文章代碼(AID): #1HVnIKV2 (C_and_CPP)