码迷,mamicode.com
首页 > 其他好文 > 详细

水平触发与边缘触发

时间:2015-08-11 18:13:46      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:

水平触发(Level Triggered,也称条件触发)select()poll()将就绪的文件描述符告诉进程后,如果进程没有对其进行IO操作,那么下次调用select()poll()的时候将再次报告这些文件描述符,所以它们一般不会丢失就绪的消息。

边缘触发(Edge Triggered):只告诉进程哪些文件描述符刚刚变为就绪状态,它只说一遍,如果我们没有采取行动,那么它将不会再次告知,这种方式称为边缘触发。

? ?

两者都会带来一系列问题:例如当100字节到达后,应用程序只读取了一部分,然后重新等待,此时水平触发的API会始终提醒应用程序;而边缘触发的则不会发出任何提醒。因此后者应执行到recv返回EWOULDBLOCK为止。而对于水平触发而言,如果关注了socket可写事件,当写缓冲始终可用的时候,就会一直得到可写提醒,造成CPU负载过高。

? ?

水平触发与边缘触发

标签:

原文地址:http://www.cnblogs.com/CodeComposer/p/4721331.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!