mordorwww 发表于 2013-09-21 08:07

接收网络报文或消息为何一般使用定时轮询的方式而不使用阻塞唤醒的方式

如果有多个socket或者多个IO句柄,那只能使用select之类的定时或者阻塞式轮询

但是在只有一个socket或者只有一个IO句柄的情况下,
接收网络报文或消息为何一般使用定时轮询的方式而不使用阻塞唤醒的方式

如下:
while (1)
{
    FD_ZERO(fdset);
    FD_SET(fdset, fd...
    usleep(4000);
    if (0 < select(fdset..., time0)
   {
      if(IS_FDSET(fdset,fd)
      recv(fd);
      ...
   }
}
我看到很多代码都采用上面这种方法,
为何不直接使用阻塞式
while(1)
{
    recv(fd);
    ...
}

bikong0411 发表于 2013-09-21 08:53

你这样不能并发吧

mordorwww 发表于 2013-09-21 18:32

bikong0411 发表于 2013-09-21 08:53 static/image/common/back.gif
你这样不能并发吧

说了是单个socket,不需要并发

bikong0411 发表于 2013-09-22 09:31

回复 3# mordorwww


    那你那种方法就可以了
页: [1]
查看完整版本: 接收网络报文或消息为何一般使用定时轮询的方式而不使用阻塞唤醒的方式