[問題] 問sleep() 誤差的問題

看板C_and_CPP作者 (watson)時間11年前 (2013/10/01 12:51), 編輯推噓1(1020)
留言21則, 5人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 6.0 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): for(i=0 ;i<iParam3 ;i++) { Sleep(1000); for( j = 0 ; j<=10000 ; j++) { HW_SetPositionPulse(2,iParam7); HW_SetPositionPulse(3,iParam7); } } 如果我iParam3命令下10 這段程式碼跑完 應該是10秒 但是7秒就跑完了 是否是因為Sleep()本身就會有的誤差 要怎麼調整還是否有其他方式 可以讓時間更準!? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.124.249.111

10/01 20:58, , 1F
這不太可能吧, 只聽過睡過頭, 沒聽過早起的
10/01 20:58, 1F

10/01 21:02, , 2F
我測了10多次以上~都是6~7秒就跑完了
10/01 21:02, 2F

10/01 21:04, , 3F
先確定迴圈執行的狀況正不正確
10/01 21:04, 3F

10/01 21:04, , 4F
Sleep(1000) 是否如原本預期的有睡十次
10/01 21:04, 4F

10/01 21:08, , 5F
有睡10次
10/01 21:08, 5F

10/01 21:08, , 6F
我早上測的時候還滿準時的
10/01 21:08, 6F

10/01 21:10, , 7F
ok了~~~又準時了
10/01 21:10, 7F

10/01 21:12, , 8F
sleep() 誤差都會這麼大嗎?
10/01 21:12, 8F

10/01 21:12, , 9F
謝謝S大
10/01 21:12, 9F

10/01 23:19, , 10F
這聽起來不像誤差啊
10/01 23:19, 10F

10/01 23:20, , 11F
其實我更好奇幹嘛沒事讓他睡覺
10/01 23:20, 11F

10/01 23:20, , 12F
算了…其實不是很重要lol
10/01 23:20, 12F

10/01 23:21, , 13F
不然你就用timeBeginPeriod(1);和timeEndPeriod(1);把
10/01 23:21, 13F

10/01 23:21, , 14F
Sleep()夾起來,這樣Sleep()的精確度會以1ms為單位
10/01 23:21, 14F

10/01 23:22, , 15F
如果和硬體有關的話大概是要配合其他裝置的timing吧
10/01 23:22, 15F

10/02 00:23, , 16F
要不要請板友直接幫你寫完比較快? 自己不會估狗?
10/02 00:23, 16F

10/02 19:55, , 17F
樓上可以去google看看,這問題又不直接...
10/02 19:55, 17F

10/02 19:56, , 18F
你可以把sleep回傳的東西用變數接下來,看看是不是正常結束
10/02 19:56, 18F

10/02 21:16, , 19F
Windows的Sleep()好像沒有傳回值,SleepEx()倒是在設成
10/02 21:16, 19F

10/02 21:17, , 20F
alertable的時候有可能會被打斷而回傳WAIT_IO_COMPLETION
10/02 21:17, 20F

10/02 21:18, , 21F
確實UNIX聞雞起舞的sleep()需要擔心睡不飽...
10/02 21:18, 21F
文章代碼(AID): #1IIiLTMw (C_and_CPP)