• 水平触发与边缘触发


    1.水平触发level trigger  LT(状态达到)

      当被监控的文件描述符上有可读写事件发生时,会通知用户程序去读写,如果用户一次读写没取完数据,他会一直通知用户,如果这个描述符是用户不关心的,它每次都返回通知用户,则会导致用户对于关心的描述符的处理效率降低。

      复用型IO中的select和poll都是使用的水平触发方式。

    2.边缘触发edge trigger  ET(状态改变)

      当被监控的文件描述符上有可读写事件发生时,会通知用户程序去读写,它只会通知用户进程一次,这需要用户一次把内容读取玩,相对于水平触发,效率更高。如果用户一次没有读完数据,再次请求时,不会立即返回,需要等待下一次的新的数据到来时才会返回,这次返回的内容包括上次未取完的数据。

      信号驱动型IO使用的是边缘触发方式。

      epoll既支持水平触发也支持边缘触发,默认是水平触发。

    3.比较

      水平触发是状态达到后,可以多次取数据。这种模式下要注意多次读写的情况下,效率和资源利用率情况。

           边缘触发是状态改变一次,取一次数据。这种模式下读写数据要注意一次是否能读写完成。

  • 相关阅读:
    特殊json处理
    css3
    居中定位
    微信支付
    vue 封装cookie,请求,登录拦截,接口拦截
    vue中axios的封装(简易版拦截,get,post
    JS的Event Loop
    JS模块化
    JS的排序算法
    时间复杂度 空间复杂度
  • 原文地址:https://www.cnblogs.com/Zhangyq-yard/p/10165092.html
Copyright © 2020-2023  润新知