三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

第一章Netty,I/O多路复用与多线程/多进程的区别

第一章Netty,I/O多路复用与多线程/多进程的区别

I/O 多路复用、多线程、多进程是高并发场景下三类核心的并发处理方案,结合此前讨论的NIO、Selector等相关背景,三者在资源开销、并发模型、适用场景上存在显著差异。

一、核心原理差异

‌I/O 多路复用‌
核心是‌单线程通过Selector同时监听成千上万个连接‌,仅当连接有就绪的I/O事件时才触发处理,全程无需为每个连接分配独立执行单元,底层依托操作系统epoll等机制实现事件通知。
‌多线程‌
为每个任务/连接分配独立线程执行,线程间共享进程内存空间,线程调度由操作系统内核完成,单个线程阻塞不会影响其他线程运行。
‌多进程‌
为每个任务/连接分配独立进程执行,进程拥有完全独立的内存地址空间,进程间资源完全隔离,通信需通过管道、共享内存等特殊机制实现。

二、关键维度对比

对比维度I/O 多路复用多线程多进程
‌资源开销‌极低,单线程可支撑数万连接,无频繁上下文切换中等,大量线程会带来高内存占用和调度开销极高,进程内存完全隔离,创建销毁成本远高于线程
‌并发上限‌极高,单机轻松支持10万+连接有限,线程数超过CPU核心数后性能骤降极低,单机进程数通常仅能到数百级别
← 返回列表