专栏名称: CPP开发者
伯乐在线旗下账号,「CPP开发者」专注分享 C/C++ 开发相关的技术文章和工具资源。
今天看啥  ›  专栏  ›  CPP开发者

一顿饭的事儿,搞懂 Linux 5 种 IO 模型

CPP开发者  · 公众号  ·  · 2024-06-20 08:57

文章预览

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操作时,如果缓冲区没有数据的话,直接返 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览