网络同步IO模型——多路复用(IO Multiplexing)

目录

多路复用是什么?

IO多路复用适合如的场景

与多进程和多线程进行比较

多路复用—select

多路复用—poll(水平触发)

多路复用—epoll(水平触发和边沿触发)

select和epoll的区别

如何查看本地文件描述符的限制 


多路复用是什么?

IO 多路复用是指内核一旦发现了进程指定的一个或者多个IO条件准备读取,他就会通知该进程。也就是说,通过一种机制,可以监听多个文件描述符,一旦某个文件描述符就绪,一般是读就绪和写就绪,就会通知程序进行相应的读写操作,这种机制需要使用select\poll\epoll来配合。

在多路复用IO模型中,或有一个内核线程不断去轮询多个socket的状态,只有当真正读写事件发送时,才真正调用实际的IO读写操作,因为在多路复用IO模型中,只需要使用一个线程就可以管理多个socket,系统不需要建立新的进程或者线程,也不必去维护,只有真正的读写事件进行时,才会使用IO资源,所以他大大减少来资源占用。

IO多路复用是使用select或者poll函数向系统内核发起调用,阻塞在这两个系统的函数调用,而不是真正的阻塞于实际的IO操作,recvfrom调用才是实际阻塞IO操作的系统调用

阻塞于select的函数的调用,等待数据报套接字可变为可读状态

当select套接字返回可读状态的时候,就可以发起recvfrom调用把数据报复制到用户空间的缓存区。

IO多路复用适合如的场景

①当客户处理多个描述字时(网络套接字),必须使用IO复用。

②当一个客户同实时处理多个套接字时。

③如果一个TCP服务器及要处理监听套接字,又要处理已连接套接字

④如果一个服务器既要处理TCP,又要处理UDP

⑤如果一个服务器要处理多个服务或者多个协议

与多进程和多线程进行比较

与多进程和多线程进行比较,多路复用可以减小系统开销,让系统不必创建多进程和多线程,也不必维护多进程和多线程。

多路复用—select

该函数允许监听的文件描述符个数上限,32位机默认是1024个。64位机默认是2048.底层数据结构是数组

目前在所有平台都支持&#x

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值