linux学习 第三十天(多路复用)

多路复用这里理解起来是有一点困难的,今天说一下select,poll,epoll,在多路复用中的使用及优缺点。

1.select

        监听所有的文件描述符,(监听文件描述符的集合,有事发生时,select不再阻塞,留下产生事件的文件描述符)

        

        就像这样,可以同时监测文件描述符fd,和0(输入端)。

    select的缺点:
    1.select监听的文件描述符集合是一个数组,有上限(1024个)
    2.select监听的文件描述符集合在应用层,内核层监听事件后需要传递给用户层带来资源开销
    3.select需要用户手动查找产生事件的文件描述符
    4.select只能工作在水平触发模式(低速模式)而无法工作在边沿触发模式(高速模式)

        2.poll

类似于select的工作方式,监听文件描述符的集合;

poll的优点:

1.提升了监听个数,最多个数(允许打开文件描述符个数的最大值)

poll缺点:

1.监听事件在应用层,内核层监听后传递给应用层,带来资源开销

2.需要用户手动查找产生事件的文件描述符

3.只能工作在水平触发模式

        3.epoll

在内核层创建一张监听事件表:

先将事件表的文件描述符都置位(-1),若有事件发生,添加该事件的文件描述符和events,监听事件,若有事件发生添加至新的events中,

epoll_create(创建)

epoll_ctl(添加/删除)

epoll_wait(监听事件发生)(会阻塞等待)

同样是用于多路复用,但相比poll和select有很大提升;

    epoll的优点:
        1.epoll没有文件描述符上限限制 
        2.epoll监听的事件表在内核层,内核监听事件不需要操作用户层空间提高效率
        3.epoll会获得产生事件的文件描述符,不需要用户查找
        4.epoll可以工作在边沿触发模式(高速模式),提高效率

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值