主机论坛_虚拟主机_美国主机_美国虚拟主机_云主机技术_全球主机交流聚集地—Web Hosting Talk 中文站

找回密码
立即注册
发新帖

0

收听

7

听众

480

主题
发表于 2022-8-24 16:24:28 | 查看: 62| 回复: 0
服务器如何选择合适的IO模型

IO模型又分为:

(1).阻塞I/O模型:数据没到达之前,I/O一直阻塞,如果数据到达,则会返回。典型的是recvfrom,一般的默认都是阻塞的。

(2).非阻塞的I/O模型:和阻塞相反,只要不能得到结果的时候,I/O立刻返回。不会阻塞当前线程。

IO复用模型:也就是自己要学习的部分。多路复用的意思是,将多路信号合并到一路上进行处理,类似多个管道汇集到一个管道,与之相反的是多路分解。

IO复用模型主要是select,poll,epoll;对一个IO端口,两次调用,两次返回,比阻塞IO并没有什么优越性;关键是能实现同时对多个IO端口进行监听;函数也会使进程阻塞,但是和阻塞I/O所不同的的,这两个函数可以同时阻塞多个I/O操作。而且可以同时对多个读操作,多个写操作的I/O函数进行检测,直到有数据可读或可写时,才真正调用I/O操作函数。

信号驱动:首先开启套接口信号驱动I/O功能,并通过系统调用sigaction安装一个信号处理函数。当数据报准备好被读时,就为该进程生成一个SIGIO信号。随即可以在信号处理程序中调用recvfrom来读数据报,井通知主循环数据已准备好被处理中。也可以通知主循环,让它来读数据报。

异步的IO模型:告知内核启动某个操作,并让内核在整个操作完成后(包括将数据从内核拷贝到用户自己的缓冲区)通知我们。这里并不是说一定要用某个模型,epoll也并不是在所有情况下都比select性能要好的,壹基比小鑫认为在选择的时候还是要结合业务需求来。

收藏回复 显示全部楼层 道具 举报

您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|小黑屋|WebHostingTalk中文站

GMT+8, 2024-5-16 15:36 , Processed in 0.068327 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表