美文网首页
程序员之同步和异步IO模型

程序员之同步和异步IO模型

作者: zhglance | 来源:发表于2020-02-01 13:20 被阅读0次

1 IO模型

1.Blocking IO拥塞IO,简称BIO

阻塞IO.jpg

说明:应用和内核进程比例为1:1
优点:访问简单,应用程序占用的CPU资源少,并发量小的时候效率高;
缺点:不适合高并发场景,应用程序阻塞。

2.Non-Blocking IO 非阻塞IO

非阻塞IO.jpg
说明:
一个线程只能干一件事,造成应用程序巨大的资源消耗,在多线程情况下,很容易导致CPU资源耗尽,很少会使用。
优点:应用程序不阻塞;
缺点:应用程序要不停的试探数据是否已经处理好,暂用应用程序很大的CPU资源。

3.IO multiplexing 多路复用IO

IO复用.jpg

说明:
多路复用IO,仍然是阻塞的IO,但一个应用程序有多个Socket连接,优势是能够处理多个连接。很类似于“多线程 + 阻塞IO”方法,但是又不太一样。内核和应用进程比例为1:N
优点:实现了部分异步(准备数据阶段是异步的),应用程序不阻塞,CPU占用资源少,适合高并发场景;
缺点: 程序调用相对,增加开发量。

4.Signal Driven IO 信号驱动式

信号驱动异步IO.jpg
优点:实现了异步调用,CPU占用资源少;
缺点: 要注意信号队列的大小,方式队列溢出。

5.asynchronous IO 异步IO

异步IO.jpg

说明:内核和应用进程比例为0:N
优点:实现了异步(准备数据阶段和数据读取两个阶段都是异步的),应用程序不阻塞,CPU占用资源少;
缺点: 需要操作系统的支持,代码开发量大。

相关文章

网友评论

      本文标题:程序员之同步和异步IO模型

      本文链接:https://www.haomeiwen.com/subject/lpztxhtx.html