文章预览
Linux里有五种IO模型: 阻塞IO 、 非阻塞IO 、 多路复用IO 、 信号驱动式IO 和 异步IO ,我发现这五种IO模型,其实能和吃饭这件事关联起来。 阻塞IO(Blocking I/O) 阻塞IO是最常见的IO模型。 当发起一个IO操作时,比如读取数据,系统会调用read()函数。如果请求的数据没有准备好,此时进程会被挂起(blocked),进入等待状态。直到数据准备好,而且复制到应用进程的缓冲区,这时候才会返回。 从调用到返回,整个时间段都是阻塞的,所以被称为阻塞IO。 阻塞IO 就像是手机没电的时候,去饭馆吃饭,我点完菜,只能等着厨师做好,服务员端上来,我才能愉快干饭。这段时间,我就只能坐在座位上干等。 非阻塞IO(Non-Blocking I/O) 阻塞IO,还是比较浪费资源的,那么非阻塞IO就来了。 所谓非阻塞IO,是在调用IO操作时,如果缓冲区没有数据的话,直接返
………………………………