使用epoll&socket的总结

1. epoll 中使用et方式触发,只需EPOLL_CTL_ADD一次,把EPOLLIN  EPOLLOUT 事件全注册,每个socket只需创建add一次,其事件就会

     一直在epoll中,当然,socketclose 后应DEL掉。

2. ET触发方式是指当fd到状态发生变化时通知,如read buffer从无到有,write buffer从满到不满才会通知。

3. 若要将accept的文件描述符添加到epoll,那么同样需要将socket设置为nonblock,调用accept时要循环读,直到EWOULDBLOCK发生。

4. socket 无论是read/write事件,均需要循环读,知道EWOULDBLOCK发生。

5. accept 触发too many open file 时,accept到buffer已满,若close掉一些socket,仍然不能接受新连接,参见第2条,所以需要调用EPOLL_CTL_MOD重新触发accept事件,还一个简单方案,监听用到fd注册epoll是使用LT触发。

示例代码:

https://ffown.googlecode.com/svn/trunk

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IMWeb前端团队

AMP 初探

本文作者:IMWeb 黎清龙 原文出处:IMWeb社区 未经同意,禁止转载 AMP 初探 1 AMP 简介 1.1 AMP 是什么? AMP 全称 A...

2236
来自专栏电光石火

ajax跨域请求时,sessionId不一样

1675
来自专栏美团技术团队

基于 KIF 的 iOS UI 自动化测试和持续集成

客户端 UI 自动化测试是大多数测试团队的研究重点,本文介绍猫眼测试团队在猫眼 iOS 客户端实践的基于 KIF 的 UI 自动化测试和持续集成过程。 测试框架...

4396
来自专栏知晓程序

除了「星标」小程序,微信「跳票已久」的新能力也上线了!

昨晚,许久「没搞事」的微信团队,发布了一个颇为「可爱的」新能力——小程序星标功能。

461
来自专栏前端儿

document.activeElement 过滤选择文件弹窗导致的页面失焦

本文很简单,其实就是 document.activeElement 的使用,获取当前页面上的焦点元素

982
来自专栏一个技术人的金融之路

简讲LSM树(Log-Structured Merge Tree)

前言:最近在了解大数据实时分析技术druid,究其原理时发现用到了类LSM树思想以实现高效的数据插入,于是展开了对LSM的了解,了解之后感觉这东西虽然也并没有很...

2407
来自专栏PPV课数据科学社区

Python拉勾爬虫——以深圳地区数据分析师为例

拉勾因其结构化的数据比较多因此过去常常被爬,所以在其多次改版之下变得难爬。不过只要清楚它的原理,依然比较好爬。其机制主要就是AJAX异步加载JSON数据,所以至...

3146
来自专栏大内老A

MVC、MVP以及Model2[上篇]

对于大部分面向最终用户的应用来说,它们都需要具有一个可视化的UI与用户进行交互,我们将这个UI称为视图(View)。在早期,我们倾向于将所有与视图相关的逻辑糅合...

17010
来自专栏开源优测

RFC1180 TCP/IP指南

842
来自专栏菩提树下的杨过

MVC官方教程索引

最近一直在学习MVC(MVC出来这么久了才开始学习,惭愧!不过我一向认为MS的东西不到RC版或至少第三个版本,基本上学了也是白学,按微软的风格,这个补丁那个bu...

17910

扫码关注云+社区