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扯上关系??
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扯上关系??
非阻塞,阻塞就是类似于recv一样的函数等待在那里。2.
多路复用我也解释不好,但是在ipmsg里面是用来使两个协议的socket使用同一个端口和ip地址
3.
等待io就是阻塞函数返回一样的咚咚。io就是input/output。
有人能给我讲讲select的实现原理吗????3.
等待io就是阻塞函数返回一样的咚咚。
-----------------------------------------
是指如果是单线程,阻塞住了,cpu就被占住停在那里了,就等阻塞解除了,也就是io来了,又开始动了,
如果是多线程,那一线程阻塞住了,cpu时间到了会轮换到另一线程,所以它不特意去等io,是这样么??
??
我又冒出一个问题,时间片时间长短有什么决定的???如果是单线程有时间片这个概念么????
如果是多线程,那一线程阻塞住了,cpu时间到了会轮换到另一线程,所以它不特意去等io,是这样么??
?? ================>>是地我又冒出一个问题,时间片时间长短有什么决定的???如果是单线程有时间片这个概念么???? =========〉〉由io什麽時候來,什麽時候結束。