标签:
水平触发(Level Triggered,也称条件触发):select()和poll()将就绪的文件描述符告诉进程后,如果进程没有对其进行IO操作,那么下次调用select()和poll()的时候将再次报告这些文件描述符,所以它们一般不会丢失就绪的消息。
边缘触发(Edge Triggered):只告诉进程哪些文件描述符刚刚变为就绪状态,它只说一遍,如果我们没有采取行动,那么它将不会再次告知,这种方式称为边缘触发。
? ?
两者都会带来一系列问题:例如当100字节到达后,应用程序只读取了一部分,然后重新等待,此时水平触发的API会始终提醒应用程序;而边缘触发的则不会发出任何提醒。因此后者应执行到recv返回EWOULDBLOCK为止。而对于水平触发而言,如果关注了socket可写事件,当写缓冲始终可用的时候,就会一直得到可写提醒,造成CPU负载过高。
? ?
标签:
原文地址:http://www.cnblogs.com/CodeComposer/p/4721331.html