事件循环可以通过多种方式退出,例如用户调用 event_base_loopbreak 或event_base_loopexit,或者在某些错误情况下自动退出。 这个dispatch有多重实现,针对select、epoll等B-1:epoll_dispatch epoll.c # epoll_dispatch(struct event_base *base, struct timeval *tv) ...
}/*update last old time*/gettime(base, &base->event_tv);/*clear time cache*/base->tv_cache.tv_sec =0;//调用I/O多路复用,监听事件res = evsel->dispatch(base, evbase, tv_p);if(res == -1)return(-1);//将time cache赋值为当前系统时间gettime(base, &base->tv_cache);//检查定时...
这个循环将会运行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对象...
(1)事件循环:event_base_dispatch(),event_base_loop()。 (2)事件循环退出:event_base_loopexit(),event_base_break()。 事件处理 设置事件相对应的回调。 (1)如果是使用event对象,在event_new()会设置相对应的回调。 (2)如果IO由libevent处理,那么使用bufferevent_setcb()来设置回调。 void bufferevent_setcb...
libevent源码分析event_base_dispatch,event_base_lo。。。接⼝:event_base_dispatch /** 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_set(base, &ev); event_add(&ev, NULL); event_base_dispatch(base); event_free(&ev); event_base_free(base); return NULL; } int main() { pthread_t tid1, tid2; pthread_create(&tid1, NULL, thread_func, NULL); pthread_create(&tid2, NULL, thread_func, NULL); pthread...
如果是一个(non-pending)未注册ev,调用event_add函数会注册该事件(变为pending状态)。如果是一个(pending)注册过的ev,调用该函数会在tv时间后重新注册该事件。成功返回0,失败返回-1。 2.4 进入循环 程序进入无限循环,等待就绪事件并执行事件处理 event_base_dispatch()函数 ...
active.event_base_dispatch() 描述: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_loop() 描述:Wait for events to become active, and run their ...
gapp_devnet_1:/data/home/andyawang/code/2013_11/LibeventTest # ./timer Game Over! Game Over! Game Over! Game Over! 二、TCP服务器:实现监听本机8888端口并输出客户端发送过来的信息 event_base_new()=>event_set()=>event_base_set()=>event_add()=>event_base_dispatch() ...
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. event_base_new()函数声明在*<event2/event.h>中,首次出现在libevent 1.4.3*版。 大多数情况下, 我们创建默认的event_base就可以满足我们的需求。 03. 创建复杂的event_base ...