From a591382541a0a2eae779b81274aa7bb005fe6a20 Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Fri, 30 Oct 2026 02:57:53 +0800 Subject: [PATCH] Update Socket.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 为面试中常问的小节加上高频标记;补充 Java 的 BIO、NIO、AIO 与 I/O 模型的对应关系。 --- notes/Socket.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/notes/Socket.md b/notes/Socket.md index 8e021dcd..f5382ff1 100644 --- a/notes/Socket.md +++ b/notes/Socket.md @@ -8,7 +8,7 @@ * [信号驱动 I/O](#信号驱动-io) * [异步 I/O](#异步-io) * [五大 I/O 模型比较](#五大-io-模型比较) - * [二、I/O 复用](#二io-复用) + * [二、I/O 复用](#二io-复用) 🔥🔥 * [select](#select) * [poll](#poll) * [比较](#比较) @@ -97,9 +97,11 @@ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr * 非阻塞式 I/O 、信号驱动 I/O 和异步 I/O 在第一阶段不会阻塞。 +Java 中的 BIO 对应阻塞式 I/O;NIO 用 Selector 实现 I/O 复用,Linux 上基于 epoll;AIO(NIO.2 的异步通道)对应异步 I/O 的编程方式,但 Linux 上的 JDK 实际用 epoll 加线程池实现。 +

-## 二、I/O 复用 +## 二、I/O 复用 🔥🔥 I/O 复用(I/O multiplexing)指用一个系统调用同时等待多个描述符,其中任何一个就绪就返回。Linux 上的实现依次为 select、poll 和 epoll,epoll 解决了前两者在描述符数量很多时的性能问题。