原帖由 cugb_cat 于 2008-4-29 20:15 发表
在使用非阻塞模式时,ET模式下要一直循环直到EAGAIN错误。
还有楼主说的那个相应的buffer,就是内核缓冲区,这个缓冲区与文件IO中文件系统中的缓冲区概念是差不多的。
原帖由 yulc 于 2008-5-15 11:51 发表
前一句话我的理解与你不同,我的理解是:
在ET模式下,不需要循环读到EAGAIN.只要你read返回的数据小于你请求的数据时,则认为已读尽缓冲区了.
请看这个:
Q9 Do I need to continuously re ...
原帖由 cookis 于 2008-5-22 15:00 发表
个人认为epoll 提到的状态改变只是针对I/O缓冲区的状态改变. 跟内核接收没什么关系吧.
这个应该是一个生产者与消费者的关系. 内核只管接收..收到后放到缓冲区. epoll 或 select 会检查
缓冲区是否有数据. 有 ...
原帖由 cookis 于 2008-5-22 15:00 发表
个人认为epoll 提到的状态改变只是针对I/O缓冲区的状态改变. 跟内核接收没什么关系吧.
这个应该是一个生产者与消费者的关系. 内核只管接收..收到后放到缓冲区. epoll 或 select 会检查
缓冲区是否有数据. 有 ...
原帖由 yangsf5 于 2008-5-23 10:13 发表
你们都是读到EGAIN就不读了?
我一开始也是,但是读不完。。
现在改的是读到EGAIN,继续读,直到出错或者读完。。貌似目前还正常。。
原帖由 yangsf5 于 2008-5-23 10:13 发表
你们都是读到EGAIN就不读了?
我一开始也是,但是读不完。。
现在改的是读到EGAIN,继续读,直到出错或者读完。。貌似目前还正常。。
原帖由 UnixStudier 于 2008-5-23 09:40 发表
converse:"
1)对于监听可读事件时,如果是socket是监听socket,那么当有新的主动连接到来为状态发生变化;对一般的socket而言,协议栈中相应的缓冲区有新的数据为状态发生变化.但是,如果在一个时间同时接收了N个连 ...
原帖由 vbs100 于 2008-12-2 19:38 发表
这个没有必要的,没有数据就不用再读了,tcp断开的时候会触发EPOLLHUP事件
在ET模式下 accetp应该一直运行到EAGAIN错误 这样就可以了
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |