水平与边缘触发网络事件机制

Posted

技术标签:

【中文标题】水平与边缘触发网络事件机制【英文标题】:Level vs Edge Trigger Network Event Mechanisms 【发布时间】:2010-12-30 07:50:09 【问题描述】:

某些网络事件机制(即epoll/poll/select)被边缘或电平触发是什么意思?

【问题讨论】:

【参考方案1】:

简短的回答是,边缘触发意味着您仅在检测到事件时收到通知(从概念上讲,发生在瞬间),而电平触发意味着您在事件出现时收到通知(这将在一段时间内为真)。例如,在边缘触发系统中,如果您希望在数据可供读取时通知您,您只会在以前无法读取数据时收到该通知,但现在可以读取。如果您读取了一些可用数据(以便剩余数据仍然可以读取),您将不会收到另一个通知,如果您读取了所有可用数据,那么当数据再次可供读取时,您会收到另一个通知。在级别触发的系统中,每当数据可供读取时,您都会收到通知。

【讨论】:

【参考方案2】:

在电子产品中,发现电压正在变化和电压已达到特定水平之间的区别。在 ASCII 艺术中:

                ------------     ---     ----
               / <---(2)    \   /   \   /    \
              /              \-/     \-/      \
             /                                 \
            /   <---(1)                         \
           /                                     \     /\
          /                                       \   /  \
----------                                         ---    ----

边沿触发事件意味着当发现电压(或其他)上升时触发事件,这可能在标记为 (1) 的时间。电平触发事件意味着当电压达到特定电平时,事件被触发 - 例如,在标记为 (2) 的时间。然而,在嘈杂的环境中,电平触发事件意味着轨迹中将有两个(上升)电平触发事件,尽管不再有(上升)边缘触发事件。因此,边缘触发的事件往往比电平触发的事件更稳定。 (边沿触发的事件不仅仅是较低的电压电平 - ASCII 艺术是有限制的。)

【讨论】:

这是错误的:“电平触发事件意味着当电压达到特定电平时”。 “达到电压”是边沿触发的定义。电平触发事件立即检查电压是否高于阈值,而不考虑历史记录。不存在“(上升)级别触发事件”。 我希望看到这些对立的定义被调和

以上是关于水平与边缘触发网络事件机制的主要内容,如果未能解决你的问题,请参考以下文章

epoll 水平触发和边缘触发的区别

浅谈浏览器的事件冒泡机制

事件触发机制

浏览器事件机制

C#事件触发机制

如何在linux下实现event事件机制