Chinaunix

标题: libevent 1.4版本,它是怎么处理socket可写,亦即EPOLLOUT事件的? [打印本页]

作者: okocha-jay    时间: 2010-09-19 15:46
标题: libevent 1.4版本,它是怎么处理socket可写,亦即EPOLLOUT事件的?
早上花了3个小时大致浏览了这个版本的libevent。
有点儿不明白它是如何处理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 15:55
另:
感觉libevent命名很蛋疼,搞的真JB复杂
那个struct event_list我至今没看到定义。只能顾名思义
浏览一遍没什么收获~
作者: @sky    时间: 2010-09-19 17:00
为什么非要封装,自己写很麻烦吗
作者: ccnuliu    时间: 2010-09-19 17:06
为什么非要封装,自己写很麻烦吗
@sky 发表于 2010-09-19 17:00



   

libevent这么高效
干嘛做重复的工作呢。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2