tv.tv_sec = 0;
tv.tv_usec = 500;
ret = select(sockudp + 1, &fds, NULL, NULL, &tv);
select 超時時間已經設為500微秒了,為什么下面的列印資訊顯示,超時時間為10毫秒呀?
這個時間縮短不了,是什么原因呀?
附上部分代碼,
void main_loop()
{
struct timeval tv,tv2,tv3;
int ret;
fd_set fds;
int sockudp = create_udp_sock();
while (1)
{
FD_ZERO(&fds);
FD_SET(sockudp, &fds);
tv.tv_sec = 0;
tv.tv_usec = 500;
gettimeofday(&tv2,NULL);
ret = select(sockudp + 1, &fds, NULL, NULL, &tv);
gettimeofday(&tv3,NULL);
printf("time :%ld:%ld=========%ld:%ld\n",tv2.tv_sec,tv2.tv_usec,tv3.tv_sec,tv3.tv_usec);
if(ret > 0)
{
processData();
}
}
return ;
}
附上部分列印資訊:
time :946707221:881299=========946707221:891231
time :946707221:891299=========946707221:901227
time :946707221:901294=========946707221:911227
time :946707221:911293=========946707221:921227
time :946707221:921293=========946707221:931227
time :946707221:931293=========946707221:941227
time :946707221:941291=========946707221:951227
time :946707221:951292=========946707221:961227
time :946707221:961293=========946707221:971227
time :946707221:971292=========946707221:981226
time :946707221:981292=========946707221:991227
time :946707221:991290=========946707222:1233
time :946707222:1311=========946707222:11231
time :946707222:11301=========946707222:21227
time :946707222:21295=========946707222:31227
time :946707222:31292=========946707222:41233
time :946707222:41306=========946707222:51229
time :946707222:51297=========946707222:61227
time :946707222:61293=========946707222:71228
time :946707222:71295=========946707222:81227
time :946707222:81294=========946707222:91229
time :946707222:91298=========946707222:101228
time :946707222:101298=========946707222:111228
time :946707222:111293=========946707222:121228
time :946707222:121294=========946707222:131228
time :946707222:131293=========946707222:141227
time :946707222:141292=========946707222:151228
time :946707222:151292=========946707222:161230
time :946707222:161302=========946707222:171228
time :946707222:171294=========946707222:181227
time :946707222:181292=========946707222:191227
time :946707222:191293=========946707222:201234
time :946707222:201312=========946707222:211230
time :946707222:211302=========946707222:221228
time :946707222:221297=========946707222:231228
time :946707222:231294=========946707222:241227
time :946707222:241292=========946707222:251227
time :946707222:251292=========946707222:261227
time :946707222:261294=========946707222:271235
time :946707222:271309=========946707222:281233
time :946707222:281304=========946707222:291229
time :946707222:291297=========946707222:301182
time :946707222:301225=========946707222:311193
time :946707222:311264=========946707222:321176
time :946707222:321243=========946707222:331173
time :946707222:331222=========946707222:341225
time :946707222:341265=========946707222:351227
time :946707222:351265=========946707222:361227
time :946707222:361264=========946707222:371192
time :946707222:371232=========946707222:381197
time :946707222:381268=========946707222:391273
time :946707222:391323=========946707222:401245
time :946707222:401293=========946707222:411231
time :946707222:411271=========946707222:421228
uj5u.com熱心網友回復:
http://blog.csdn.net/imhikaru/article/details/7268312uj5u.com熱心網友回復:
Windows計時精度≈15msuj5u.com熱心網友回復:
執行緒,通過什么方法能短時間等待一段時間,再繼續???uj5u.com熱心網友回復:
Sleep(0);//等待幾毫秒
《Windows核心編程》
uj5u.com熱心網友回復:
我用usleep(1);
等待的也是10ms
uj5u.com熱心網友回復:
我需要等待的是0.5msuj5u.com熱心網友回復:
那建議你使用VxWorks
uj5u.com熱心網友回復:
超時有一些限制,需要內核層面等設定了,或者驅動開發等uj5u.com熱心網友回復:
作業系統限制,精度再無法提高.轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/113973.html
標籤:網絡編程
上一篇:LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main Debug/Bigw
下一篇:VC++ 在XP下用VC6.0編的程式 exe 檔案在XP上運行正常,但是在WIN10、WIN7上就出現錯誤:File:timecore.cpp Line:34
