搜公众号
推荐 原创 视频 Java开发 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库
Lambda在线 > jmdvirus的八卦炉 > linux IO 异步模型

linux IO 异步模型

jmdvirus的八卦炉 2018-12-14
举报

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



版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《linux IO 异步模型》的版权归原作者「jmdvirus的八卦炉」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注jmdvirus的八卦炉微信公众号

jmdvirus的八卦炉微信公众号:gh_4d3536387d48

jmdvirus的八卦炉

手机扫描上方二维码即可关注jmdvirus的八卦炉微信公众号

jmdvirus的八卦炉最新文章

精品公众号随机推荐

举报