1 IO模型
1.Blocking IO拥塞IO,简称BIO
说明:应用和内核进程比例为1:1
优点:访问简单,应用程序占用的CPU资源少,并发量小的时候效率高;
缺点:不适合高并发场景,应用程序阻塞。
2.Non-Blocking IO 非阻塞IO
说明:
一个线程只能干一件事,造成应用程序巨大的资源消耗,在多线程情况下,很容易导致CPU资源耗尽,很少会使用。
优点:应用程序不阻塞;
缺点:应用程序要不停的试探数据是否已经处理好,暂用应用程序很大的CPU资源。
3.IO multiplexing 多路复用IO
说明:
多路复用IO,仍然是阻塞的IO,但一个应用程序有多个Socket连接,优势是能够处理多个连接。很类似于“多线程 + 阻塞IO”方法,但是又不太一样。内核和应用进程比例为1:N
优点:实现了部分异步(准备数据阶段是异步的),应用程序不阻塞,CPU占用资源少,适合高并发场景;
缺点: 程序调用相对,增加开发量。
4.Signal Driven IO 信号驱动式
信号驱动异步IO.jpg优点:实现了异步调用,CPU占用资源少;
缺点: 要注意信号队列的大小,方式队列溢出。
5.asynchronous IO 异步IO
说明:内核和应用进程比例为0:N
优点:实现了异步(准备数据阶段和数据读取两个阶段都是异步的),应用程序不阻塞,CPU占用资源少;
缺点: 需要操作系统的支持,代码开发量大。
网友评论