看板 C_and_CPP 關於我們 聯絡資訊
板上大大好,是這樣的 小弟最近寫程式時,在time control時碰到一個問題 想要做的事情是 從QUEUE中,每隔"一秒鐘整"拉出一筆資料,然後把她送出去 但是始終沒有辦法控制到很精準 想問問看我這樣的邏輯有甚麼問題 或者是說 我該乖乖放棄不用控制一秒鐘 而是以分鐘為單位之類的 以下是我的CODE void sleep_til_round_sec() { struct timeval now; gettimeofday(&now, 0); usleep(1000000 - now.tv_usec); } void send_func(){ struct timeval start, end; while(1){ gettimeofday(&start, 0); DeQueue(xxx); Sendto(...); gettimeofday(&end, 0); if(end.tv_sec - start.tv_sec > 0){ exit(0); } sleep_til_round_sec(); } } 用wireshark看 發現出來的結果還是沒有辦法每個封包之間的距離是一秒 還是會不準 而且最奇怪的地方是居然是太快 而不是太慢 用wireshark看我每個封包的間隔大概是 1sec - 5 * 10E-4 秒左右 想請問板上大大有沒有更好的時間控制機制之類的? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.217.30.38 ※ 編輯: mingcloud 來自: 61.217.30.38 (05/10 23:58) ※ 編輯: mingcloud 來自: 61.217.30.38 (05/11 00:18)
firejox:要更精準我猜 組語...XD 05/12 22:17