关于Blocking IO, Non-Blocking IO 和 Asynchronous I/O的理解
摘要:概括来说,一个IO操作可以分为两个部分:发出请求、结果完成。如果从发出请求到结果返回,一直Block,那就是Blocking IO;如果发出请求就可以返回(结果完成不考虑),就是non-blocking IO;如果发出请求就返回,结果返回是Block在select或者poll上的,则其只能称为IO multiplexing;如果发出请求就返回,结果返回通过Call Back的方式被处理,就是AIO。文[2]中图画的不错,说的也比较清楚借来用一下。Blocking IO这个最好理解了,在Blocking IO模式下,函数调用只有在操作完成后才会返回。下图是它调用过程的图示:重点解释下上图,下面例
阅读全文
select vs. poll
摘要:select()监测多个文件描述符,等待一个或者多个文件描述符对某些类型的IO操作(Read,Write)变成Ready状态。A file descriptor is considered ready if it is possible to perform the corresponding I/O operation without blocking. Reference1. http://daniel.haxx.se/docs/poll-vs-select.html
阅读全文