发现select做延时windows没效果,Linux正常

来源:互联网 发布:淘宝新开店铺怎么找 编辑:程序博客网 时间:2024/04/30 15:24

 在完善我的跨平台的发邮件类库时,select做延时windows没效果,Linux正常,还以为我代码写错了呢;在网上搜素下也没发现类似说法,于是我就写了段小测了,果然select延时在windows上缩水了

 

#include <iostream>
#include <time.h>

#ifdef WIN32
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")
#else
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#endif

using namespace std;
int  main()
{
        struct timeval timeWait;
        timeWait.tv_sec = 0;
        timeWait.tv_usec = 10000;
        int liRecvCnt = 0;

        time_t t1, t2;
        time(&t1);
         while(liRecvCnt < 10)
         {
                timeWait.tv_sec = 0;
                timeWait.tv_usec = 500000;


                liRecvCnt++;
                select(0, NULL, NULL, NULL, &timeWait);
        }
         time(&t2);

         cout<<t2-t1<<endl;

         return 0;
}

 

 

在VS2005上输出是 0
在Linux上输出是 5 S

 

你有什么想法,敬请留言

QQ:16645709

原创粉丝点击