免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: converse
打印 上一主题 下一主题

[函数] epoll学习笔记 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2008-05-23 09:40 |只看该作者
converse:"
1)对于监听可读事件时,如果是socket是监听socket,那么当有新的主动连接到来为状态发生变化;对一般的socket而言,协议栈中相应的缓冲区有新的数据为状态发生变化.但是,如果在一个时间同时接收了N个连接(N>1),但是监听socket只accept了一个连接,那么其它未 accept的连接将不会在ET模式下给监听socket发出通知,此时状态不发生变化;对于一般的socket,就如例子中而言,如果对应的缓冲区本身已经有了N字节的数据,而只取出了小于N字节的数据,那么残存的数据不会造成状态发生变化."
这个确实是个问题。server端的代码就有这里说的问题。listenfd不应该用epoll监听。

[ 本帖最后由 UnixStudier 于 2008-5-23 09:41 编辑 ]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
22 [报告]
发表于 2008-05-23 09:40 |只看该作者

回复 #20 marxn 的帖子

有创意...

NOTE: EAGAIN 是返回 -1 的errno..

论坛徽章:
0
23 [报告]
发表于 2008-05-23 09:43 |只看该作者
关于recv的缓冲区大小,
每次recv的时候我用的缓冲区大小都是tcp缓冲区的大小,这样只读一次,不用循环读到EGAIN。暂时还发现什么问题。

论坛徽章:
1
天蝎座
日期:2013-08-25 10:27:22
24 [报告]
发表于 2008-05-23 10:13 |只看该作者
“你们都是读到EGAIN就不读了?

我一开始也是,但是读不完。。

现在改的是读到EGAIN,继续读,直到出错或者读完。。貌似目前还正常。。”


补充:以上是原帖。当时概念不是很清晰。请勿借鉴。:wink:
                         --- 09.03.12

[ 本帖最后由 yangsf5 于 2009-3-12 09:25 编辑 ]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
25 [报告]
发表于 2008-05-23 11:06 |只看该作者

回复 #24 yangsf5 的帖子

读到EAGAIN 还会出什么错?

论坛徽章:
0
26 [报告]
发表于 2008-05-23 11:12 |只看该作者
原帖由 yangsf5 于 2008-5-23 10:13 发表
你们都是读到EGAIN就不读了?

我一开始也是,但是读不完。。

现在改的是读到EGAIN,继续读,直到出错或者读完。。貌似目前还正常。。

EAGAIN就是错误啊。

论坛徽章:
0
27 [报告]
发表于 2008-05-23 14:11 |只看该作者
原帖由 cookis 于 2008-5-23 09:40 发表
有创意...

NOTE: EAGAIN 是返回 -1 的errno..


是啊,我说的哪里错了?
我的意思是在recv读取到的字节数小于请求的字节数时,下次读不一定会返回-1。有什么问题吗?

论坛徽章:
0
28 [报告]
发表于 2008-05-23 14:25 |只看该作者
原帖由 yangsf5 于 2008-5-23 10:13 发表
你们都是读到EGAIN就不读了?

我一开始也是,但是读不完。。

现在改的是读到EGAIN,继续读,直到出错或者读完。。貌似目前还正常。。


如果你的客户端是一个低速网络设备,你会发现服务器的CPU占用率瞬间上升至100%

论坛徽章:
0
29 [报告]
发表于 2008-06-03 13:20 |只看该作者

epoll ET模式问题

把文件描述符设置为ET模式后,能否保证有新的数据到来后,内核只通知一次?

论坛徽章:
0
30 [报告]
发表于 2008-06-03 13:26 |只看该作者

epoll ET模式问题

我把文件描述符设置为ET后,在相应的sockfd上读取数据完毕后,为什么又一次从epoll_wait中返回了刚才处理过的文件描述符,但没有数据可读
????
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP