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函数的定义: 执行事件主循环 int event_bas...
function event_base_loop(base, flags = EVENT_LOOP_ONCE|EVENT_LOOP_NONBLOCK) { local done = 0; while (!done) { local tv = NULL // 如果flags设置了EVENT_LOOP_NONBLOCK的标记,那么dispatch将 // 不会进行睡眠,而是立刻被唤醒 if (flags & EVENT_LOOP_NONBLOCK) tv = 0; else tv = timeout_ne...
int event_base_dispatch(struct event_base *base); 函数说明: 进入循环等待事件参数说明:由event_base_new函数返回的指向event_base结构的指针调用该函数, 相当于没有设置标志位的event_base_loop。程序将会一直运行, 直到没有需要检测的事件了, 或者被结束循环的API终止。 事件循环推出event_base_loopbreak和event...
event_base_dispatch()等同于没有设置标志的event_base_loop()。所以,event_base_dispatch()将一直运行,直到没有已经注册的事件了,或者调用了event_base_loopbreak()或者event_base_loopexit()为止。 /** Event dispatching loop This loop will run the event base until either there are no more pending or ...
一、Libevent的地基event_base 在使用libevent的函数之前,需要先申请一个或event_base结构,相当于盖房子时的地基,在event_base基础上会有一个事件集合,可以检测哪个事件是激活的(就绪),通常情况下可以通过event_base_new函数获得event_base
event_base_loop(struct event_base *base, int flags) { const struct eventop *evsel = base->evsel; struct timeval tv; struct timeval *tv_p; int res, done, retval = 0; /* Grab the lock. We will release it inside evsel.dispatch, and again ...
先看这个函数 event_base_dispatch 位于event.c int event_base_dispatch(struct event_base *event_base) { return (event_base_loop(event_base, 0)); } int event_base_loop(struct event_base *base, int flags) { const struct eventop *evsel = base->evsel; ...
1. event_base_loopexit(base, NULL) 如果当前正在为多个活跃事件调用回调函数,那么不会立即退出,而是等到所有的活跃事件的回调函数都执行完成后才退出事件循环 2. event_base_loopbreak(base) 如果当前正在为多个活跃事件调用回调函数,那么当前正在调用的回调函数会被执行,然后马上退出事件循环,而并不处理其他的活跃事...
event_loop 一旦我们有一些事件注册在一个event_base上后,我们自然想让libevent提醒我们。 默认情况下,这个event_base_loop函数会返回一...
Event dispatching loop 事件分配循环 This loop will run the event base until either there are no more pending or active, or until something calls event_base_loopbreak() or event_base_loopexit().这个循环将会运⾏event base,知道没有等待的或者活动的事件,或者其它的调⽤了event_base_loopbreak()...