1.
select函数本身是阻塞还是非阻塞,select执行下去的三个前提,超时,有read,或有write,那么没这3个条件,select就死等在那里等超时么?这个跟阻塞式有什么区别,阻塞式就是没超时这个处理循环过程???2.
多路复用体现在哪里??是指可以使很多个socket到同一个fd_set上,然后select一下,再用FD_ISSET去判断set是否还存在??
比如:
             FD_SET(Socket1,&fdSet);
           FD_SET(Socket2,&fdSet);    select(3,&fdSet,NULL,NULL,&tm) 
         if(FD_ISSET(Socket1,&fdSet))
                if(FD_ISSET(Socket1,&fdSet))
               
3.
顺带问个I/0问题,
看到这么一句话,“因为我们经常使用线程来提高程序性能,其实线程就是让CPU不停的工作,而不是总在等待I/O,或者是一个CPI,累死了还是一个CPU.千万不要以为线程越多的服务器,它的性能就越好,线程的切换也是需要消耗时间的,对于I/O等待少的程序,线程越多性能反而越低”
这里的  等待I/0 是什么意思???看不懂  线程切换为什么跟I/0扯上关系??

解决方案 »

  1.   

    1. 
    非阻塞,阻塞就是类似于recv一样的函数等待在那里。2. 
    多路复用我也解释不好,但是在ipmsg里面是用来使两个协议的socket使用同一个端口和ip地址                              
    3. 
    等待io就是阻塞函数返回一样的咚咚。io就是input/output。
      

  2.   

    1.select就死等在那里等超时这个过程  它在做什么???不明白
     
    有人能给我讲讲select的实现原理吗????3.
    等待io就是阻塞函数返回一样的咚咚。 
    -----------------------------------------
    是指如果是单线程,阻塞住了,cpu就被占住停在那里了,就等阻塞解除了,也就是io来了,又开始动了,
    如果是多线程,那一线程阻塞住了,cpu时间到了会轮换到另一线程,所以它不特意去等io,是这样么??
    ??
    我又冒出一个问题,时间片时间长短有什么决定的???如果是单线程有时间片这个概念么????
      

  3.   

    是指如果是单线程,阻塞住了,cpu就被占住停在那里了,就等阻塞解除了,也就是io来了,又开始动了, 
    如果是多线程,那一线程阻塞住了,cpu时间到了会轮换到另一线程,所以它不特意去等io,是这样么?? 
    ?? ================>>是地我又冒出一个问题,时间片时间长短有什么决定的???如果是单线程有时间片这个概念么???? =========〉〉由io什麽時候來,什麽時候結束。