浅谈服务器性能测试的全生命周期——从测试、结果分析到优化策略(24)

发表于:2016-11-28来源:腾讯作者:Micheal点击数: 标签:服务器
《UNIX网络 编程 卷1:套接字联网API》中有一幅图比较经典。 IO模型 阻塞I/O模型:数据没到达之前,I/O一直阻塞,如果数据到达,则会返回。典型的是recvf

《UNIX网络编程卷1:套接字联网API》中有一幅图比较经典。


IO模型

阻塞I/O模型:数据没到达之前,I/O一直阻塞,如果数据到达,则会返回。典型的是recvfrom,一般的默认都是阻塞的。
非阻塞的I/O模型:和阻塞相反,只要不能得到结果的时候,I/O立刻返回。不会阻塞当前线程。
IO复用模型:也就是自己要学习的部分。多路复用的意思是,将多路信号合并到一路上进行处理,类似多个管道汇集到一个管道,与之相反的是多路分解。
IO复用模型主要是select,poll,epoll;对一个IO端口,两次调用,两次返回,比阻塞IO并没有什么优越性;关键是能实现同时对多个IO端口进行监听;函数也会使进程阻塞,但是和阻塞I/O所不同的的,这两个函数可以同时阻塞多个I/O操作。而且可以同时对多个读操作,多个写操作的I/O函数进行检测,直到有数据可读或可写时,才真正调用I/O操作函数。

原文转自:http://wetest.qq.com/lab/view/102.html