linux IO Model

IO 异步模型有 select, poll, signal-driven IO, epoll

select , poll 是比较接近的两种,只是调用方法上的区别

epoll 是linux 中的新的模式,相比对于大量的数据会有较高的性能

select, poll 是在每次调用的时需要将自己要监听的信息送入调用函数,内核据此检测,并在有事件时,通知调用者,并清空相关信息。在参数中会提供最大数量 ,内核 也正是基于此最大数量来进行检测,所以在数量较大时性能会下降。

对于 epoll,在一次添加后,就不需要再操作了,内核有自己的记录方式,并在事件产生时,由epoll_wait 直接返回,而没有事件时, epoll_wait 基于不做事,这样对于大量的文件监听,性能也不会有太大变动。

signal-driven IO 是基于信号机制的一种监听方式,在有事件产生时,会以信号的形势通知到调用者,使用场景不高

针对 select 方式,假设调用时先创建信号函数 ,再调用 select ,而事件在 两者之间产生,就会使用得 select 接收不到,此种现象提供了 pselect 函数,具体用处较少,可自行查阅

同时也提供另一种方法,即创建管道,在信号产生时往管道去写,同时 select 监听此管道,也就是在信号产生时将事件通知到 select

转载于:https://my.oschina.net/u/145591/blog/2986722

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值