[問題] 如何使function看時間執行

看板C_and_CPP (C/C++)作者 (味噌湯好喝)時間14年前 (2011/10/20 01:33), 編輯推噓3(3019)
留言22則, 8人參與, 最新討論串1/1
小弟我想問的是 假設我現在有兩個fork()出來的process在執行 在程式跑的時候要怎麼看時間而sleep呢? 我設定while(1){if(在while裡時間過了5秒)sleep(10);} 要怎麼達到這樣的要求呢? 不好意思可能問題很蠢 麻煩指教一下~ 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 112.105.147.99

10/20 01:55, , 2F
我現在是用difftime 但是我這邊sleep() 裡面單位是秒
10/20 01:55, 2F

10/20 01:55, , 3F
變得很難寫...
10/20 01:55, 3F

10/20 02:10, , 4F
有點麻煩的是作if else也要花時間 看你需要的精確度
10/20 02:10, 4F

10/20 02:12, , 5F
不用什麼精準度
10/20 02:12, 5F

10/20 10:38, , 6F
不太懂你所說的困難處是指?
10/20 10:38, 6F

10/20 10:42, , 7F
看你的時間要多準
10/20 10:42, 7F

10/20 10:42, , 8F
sleep這種東西因為context switch出去再回來的關係,很不準
10/20 10:42, 8F

10/20 10:43, , 9F
不管哪個平台sleep 1ms都不可能1ms就剛好回來
10/20 10:43, 9F

10/20 10:44, , 10F
都一定會有略為超過時間的問題
10/20 10:44, 10F

10/20 10:44, , 11F
假設說精想要大約在1秒左右,常見的作法就是睡100 or 200ms
10/20 10:44, 11F

10/20 10:44, , 12F
然後再檢查時間是不是到了,沒到繼續睡
10/20 10:44, 12F

10/20 10:45, , 13F
如果想要精確度在毫秒等級,例如控制I/O
10/20 10:45, 13F

10/20 10:46, , 14F
那通常的作法就只能busywaiting了
10/20 10:46, 14F

10/20 10:46, , 15F
如果只是需要delay而不是說一定要剛好那麼準
10/20 10:46, 15F

10/20 10:47, , 16F
當然還是可以用msleep之類的
10/20 10:47, 16F

10/20 10:47, , 17F
不過如果想要micro second這個數量級的sleep
10/20 10:47, 17F

10/20 10:47, , 18F
那就只能用busywaiting或接受它的不準了
10/20 10:47, 18F

10/20 11:00, , 19F
http://codepad.org/PLMzkclJ 我想到的簡單寫法
10/20 11:00, 19F

10/20 11:37, , 20F
推樓上 j 大!
10/20 11:37, 20F

10/20 11:38, , 21F
其實我不確定這樣寫會不會有什麼問題XD
10/20 11:38, 21F

10/20 13:33, , 22F
我竟然想到 程式之美 第一題 XD
10/20 13:33, 22F
文章代碼(AID): #1Edmdr_p (C_and_CPP)
文章代碼(AID): #1Edmdr_p (C_and_CPP)