首页 > 其他 > 详细

水平触发与边缘触发

时间:2015-08-11 18:10:30      阅读:286      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!