libevent 1.4版本,它是怎么处理socket可写,亦即EPOLLOUT事件的?
时间:2010-09-19
来源:互联网
早上花了3个小时大致浏览了这个版本的libevent。
有点儿不明白它是如何处理socket可写的情况?
恳请熟悉的朋友解答
上上周写过一个socket通信框架,典型的reactor,不到五千行代码。
我是这样做的:socket描述符封装中,提供了两种send方法,一个是由EPOLLOUT事件驱动,也就是epollwait返回OUT时调用,如果::send的返回值与要发送的字节数相等,那么epoll_ctl,不在监视OUT事件;
一个与EPOLLOUT无关,网络线程每一轮都要调用它(前提是自己包装的那个发送缓冲区不为空),如果发现了::send的返回值与要发送的字节数不符合,就epoll_ctl,关注EPOLLOUT事件。
libevent的网络循环应该是那个dispatch函数,最终是调用event_base_loop。
有点儿不明白它是如何处理socket可写的情况?
恳请熟悉的朋友解答
上上周写过一个socket通信框架,典型的reactor,不到五千行代码。
我是这样做的:socket描述符封装中,提供了两种send方法,一个是由EPOLLOUT事件驱动,也就是epollwait返回OUT时调用,如果::send的返回值与要发送的字节数相等,那么epoll_ctl,不在监视OUT事件;
一个与EPOLLOUT无关,网络线程每一轮都要调用它(前提是自己包装的那个发送缓冲区不为空),如果发现了::send的返回值与要发送的字节数不符合,就epoll_ctl,关注EPOLLOUT事件。
libevent的网络循环应该是那个dispatch函数,最终是调用event_base_loop。
作者: okocha-jay 发布时间: 2010-09-19
另:
感觉libevent命名很蛋疼,搞的真JB复杂
那个struct event_list我至今没看到定义。只能顾名思义
浏览一遍没什么收获~
感觉libevent命名很蛋疼,搞的真JB复杂
那个struct event_list我至今没看到定义。只能顾名思义
浏览一遍没什么收获~
作者: okocha-jay 发布时间: 2010-09-19
为什么非要封装,自己写很麻烦吗
作者: @sky 发布时间: 2010-09-19
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28