前言:event_base_dispatch的主要功能包括:初始化和参数检查、事件循环主逻辑、准备和检查回调的执行、事件调度与处理以及最终的退出逻辑。 其实在内部就是调用了epoll_wait 或者 select模式的select函数,获取内…
int event_base_loop(struct event_base *, int); 分析 在event_base_dispatch函数中,实际上调用的是event_base_loop(event_base, 0);也就是如果使用event_base_dispatch函数执行事件主循环,那么会将event_base_loop的第二个参数设置为0去调用它,这个时候将一直执行事件循环 下面来看看event_base_loop函数的定义...
这个循环将会运行event base,知道没有等待的或者活动的事件,或者其它的调用了event_base_loopbreak()或event_base_loopexit(). @param base the event_base structure returned by event_base_new() or event_base_new_with_config() event_base_new() 或者 event_base_new_with_config() 返回的event_base对象...
structevent*);//注册事件int(*del)(void*,structevent*);//删除事件int(*dispatch)(structevent_base *,void*,structtimeval *);//事件分发void(*dealloc)(structevent_base *,void*);//注销,释放资源/*set if we need to reinitialize the event base*/intneed_reinit;...
int event_base_dispatch(struct event_base *base); 函数说明: 进入循环等待事件参数说明:由event_base_new函数返回的指向event_base结构的指针调用该函数, 相当于没有设置标志位的event_base_loop。程序将会一直运行, 直到没有需要检测的事件了, 或者被结束循环的API终止。 事件循环推出event_base_loopbreak和event...
event_base_loop函数 /** Wait for events to become active, and run their callbacks. This is a more flexible version of event_base_dispatch(). By default, this loop will run the event base until either there are no more pending or active events, or until something calls event_base_loopbr...
=EVUTIL_INVALID_SOCKET);// start event loop// return 0 if successful, -1 if an error occurred, or 1 if we exited because no events were pending or active.ret=event_base_dispatch(base);assert(ret>=0);// free the event baseevent_base_free(base);return0;}intmain(){setbuf(stdout,...
1.创建事件基类(event_base),它用来管理所有事件信息。 2.创建网络连接监听事件(evconnlistener),它可监听socket连接。 3.创建读写事件(bufferevent),它用来接收读写数据事件触发。 4.创建数据事件(evbuffer),它可以获取读写数据。 5.开启事件分发(event_base_dispatch),它负责分发事件信息。
跟踪event_base_loop接⼝ /** Wait for events to become active, and run their callbacks.等待events 变成活动的,并运⾏对应的回调函数。This is a more flexible version of event_base_dispatch().这是⼀个更为灵活的event_base_dispatch()By default, this loop will run the event base until ...
event_base_dispatch(base); return0; } bufferevent_socket_connect()函数由2.0.2-alpha版引入。在此之前,必须自己手动在套接字上调用connect(),连接完成时,bufferevent将报告写入事件。 注意:如果使用bufferevent_socket_connect()发起连接,将只会收到BEV_EVENT_CONNECTED事件。如果自己调用connect(),则连接上将被报...