[問題] 關於clock()回傳負值

看板C_and_CPP (C/C++)作者 (低調一點的好)時間13年前 (2012/07/24 21:29), 編輯推噓2(208)
留言10則, 3人參與, 最新討論串1/1
目前遇到一個問題 是寫一段程式 每20ms把值寫到檔案內 透過用clock計算有沒有超過20ms 程式碼 截錄如下 char i=1; clock_t start_time, min_time; //long int , unsiged long int start_time = clock(); do{ min_time = clock(); /* mircosecond */ total_time1= (double)(min_time - start_time)/(double)CLOCKS_PER_SEC; if(total_time1>=(0.02*i)) { fprintf(fft1," %-6.2f,\n",預寫入之值); count+= 0.02; i++; } if(count>=我設定的時間) 關檔結束; }while(1); 但是設定的時間只要超過40分鐘 clock傳回來的值就會變負值 看起來是溢位的問題 start_time, min_time的型態 我有設過long int , unsiged long int,但都一樣是負值 想請問板上的大大 有沒有解決這方面的經驗 可以指導一下 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.34.245.165

07/24 21:38, , 1F
簡易的大數演算法做解決,或用其他計時函式,但你的環境是??
07/24 21:38, 1F
環境 linux arm kernel 2.6.10 有嘗試使用usleep()直接delay 20ms 不過時間一久 誤差大的驚人@@ ※ 編輯: rodmaner 來自: 111.241.58.185 (07/24 22:43)

07/24 22:45, , 2F
我不知道 linux arm 有什麼其他計數器,一個簡單的方式是,
07/24 22:45, 2F

07/24 22:46, , 3F
當clock()-t >60*CLOCK_PER_SEC時,min+1,記slack,重計時
07/24 22:46, 3F

07/24 22:47, , 4F
感謝你的建議 我再測試看看
07/24 22:47, 4F

07/24 22:50, , 5F
疑!! 你是打算用這種方式來延時嗎????
07/24 22:50, 5F

07/24 23:18, , 6F
是阿 樓上有別的方式可以指導一下嗎
07/24 23:18, 6F

07/24 23:22, , 7F
是沒有,只是我在想這麼頻繁用 clock() 怕不準,另如果有開
07/24 23:22, 7F

07/24 23:22, , 8F
multi-thread 的話這方法大概死得很慘吧 (或許您沒開)
07/24 23:22, 8F

07/24 23:28, , 9F
XD這是另外一條thread沒錯,不過現在先求有再求準
07/24 23:28, 9F

07/25 02:25, , 10F
check nanosleep()
07/25 02:25, 10F
文章代碼(AID): #1G3gD0Qx (C_and_CPP)
文章代碼(AID): #1G3gD0Qx (C_and_CPP)