Untitled

Untitled

01 阻塞式 I/O 模型

Untitled

在阻塞 I/O 模型中,线程的执行会暂停,直到 I/O 操作完成。在此期间,线程不能执行任何其他任务。

使用场景

02 非阻塞 I/O 模型

Untitled

在非阻塞 I/O 模型中,即使数据尚未可用,I/O 操作也会立即返回。应用程序可以在等待 I/O 操作完成的同时执行其他任务。

使用场景

03 I/O 复用模型

Untitled

I/O 多路复用使用 select()、poll() 或 epoll() 等机制同时监控多个 I/O 流。当可以在不阻塞的情况下执行一个或多个 I/O 操作时,应用程序会收到通知。

使用场景

04 异步 I/O 模型

在异步 I/O 模型中,应用程序启动 I/O 操作并继续处理。I/O 操作完成后,系统通常会通过回调或信号通知应用程序。

使用场景

05 信号驱动 I/O

Untitled

信号驱动 I/O(SIGIO)是 Unix 类操作系统中的一种机制,它允许进程在可以对文件描述符执行 I/O 操作时获得异步通知,而无需阻塞。具体做法是,当文件描述符可以读写时,向进程发送一个信号(通常是 SIGIO)。

使用场景

06 选择正确的模型

网络 I/O 模型的选择取决于应用需求、性能考虑、复杂性和应用运行环境等因素。例如:

高性能IO

Untitled

Untitled

ByteByteGo | Technical Interview Prep

Linux的5种网络IO模型详解 - 苦涩的茶 - 博客园