看板 C_and_CPP 關於我們 聯絡資訊
小弟我想問的是 假設我現在有兩個fork()出來的process在執行 在程式跑的時候要怎麼看時間而sleep呢? 我設定while(1){if(在while裡時間過了5秒)sleep(10);} 要怎麼達到這樣的要求呢? 不好意思可能問題很蠢 麻煩指教一下~ 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 112.105.147.99
devil115789:我現在是用difftime 但是我這邊sleep() 裡面單位是秒 10/20 01:55
devil115789:變得很難寫... 10/20 01:55
amozartea:有點麻煩的是作if else也要花時間 看你需要的精確度 10/20 02:10
devil115789:不用什麼精準度 10/20 02:12
shadow0326:不太懂你所說的困難處是指? 10/20 10:38
priv:看你的時間要多準 10/20 10:42
priv:sleep這種東西因為context switch出去再回來的關係,很不準 10/20 10:42
priv:不管哪個平台sleep 1ms都不可能1ms就剛好回來 10/20 10:43
priv:都一定會有略為超過時間的問題 10/20 10:44
priv:假設說精想要大約在1秒左右,常見的作法就是睡100 or 200ms 10/20 10:44
priv:然後再檢查時間是不是到了,沒到繼續睡 10/20 10:44
priv:如果想要精確度在毫秒等級,例如控制I/O 10/20 10:45
priv:那通常的作法就只能busywaiting了 10/20 10:46
priv:如果只是需要delay而不是說一定要剛好那麼準 10/20 10:46
priv:當然還是可以用msleep之類的 10/20 10:47
priv:不過如果想要micro second這個數量級的sleep 10/20 10:47
priv:那就只能用busywaiting或接受它的不準了 10/20 10:47
james732:http://codepad.org/PLMzkclJ 我想到的簡單寫法 10/20 11:00
cutecpu:推樓上 j 大! 10/20 11:37
james732:其實我不確定這樣寫會不會有什麼問題XD 10/20 11:38
tropical72:我竟然想到 程式之美 第一題 XD 10/20 13:33