首页技术文章正文

什么是IO多路复用?

更新时间:2023-05-30 来源:黑马程序员 浏览量:

IT培训班

是利用单个线程来同时监听多个Socket,并在某个Socket可读、可写时得到通知,从而避免无效的等待,充分利用CPU资源。

阶段一:

①用户进程调用select,指定要监听的Socket集合

②内核监听对应的多个socket

③任意一个或多个socket数据就绪则返回readable

④此过程中用户进程阻塞

阶段二:

⑤用户进程找到就绪的socket

⑥依次调用recvfrom读取数据

⑦内核将数据拷贝到用户空间

⑧用户进程处理数据

1685442517541_131.png

IO多路复用是利用单个线程来同时监听多个Socket,并在某个Socket可读、可写时得到通知,从而避免无效的等待,充分利用CPU资源。不过监听Socket的方式、通知的方式又有多种实现,常见的有select、poll、epoll。

差异:select和poll只会通知用户进程有Socket就绪,但不确定具体是哪个Socket,需要用户进程逐个遍历Socket来确认。epoll则会在通知用户进程Socket就绪的同时,把已就绪的Socket写入用户空间。

1685442623281_132.png

分享到:
在线咨询 我要报名
和我们在线交谈!