+ -
当前位置:首页 → 问答吧 → libevent 1.4版本,它是怎么处理socket可写,亦即EPOLLOUT事件的?

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。

作者: okocha-jay   发布时间: 2010-09-19

另:
感觉libevent命名很蛋疼,搞的真JB复杂
那个struct event_list我至今没看到定义。只能顾名思义
浏览一遍没什么收获~

作者: okocha-jay   发布时间: 2010-09-19

为什么非要封装,自己写很麻烦吗

作者: @sky   发布时间: 2010-09-19