→ firejox:要更精準我猜 組語...XD 05/12 22:17
板上大大好,是這樣的
小弟最近寫程式時,在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)