英文翻译的话就是 event_base 的派遣dispatch:派遣;发送;迅速处理,迅速办妥;杀死,处决1.0 event_base_dispatch event.c # event_dispatch(void)内部会调用 event_base_loop 2.0 event_base_loop 在event_base_loop 这个函数内,比较重要的逻辑在下面这几块: ...
@see event_base_loopexit(), event_base_dispatch(), EVLOOP_ONCE, EVLOOP_NONBLOCK*/EVENT2_EXPORT_SYMBOLintevent_base_loop(structevent_base *eb,intflags); intevent_base_loop(structevent_base *base,intflags) {conststructeventop *evsel =base->evsel;structtimeval tv;structtimeval *tv_p;intres,...
事件循环event_base_dispatch和event_base_loop libevent在event_base_new好之后, 需要等待事件的产生, 也就是等待事件被激活, 所以程序不能退出, 对于epoll来说, 我们需要自己控制循环, 而在libevent中也给我们提供了API接口, 类似where(1)的功能. //这个函数一般不用, 而大多数都调用libevent给我们提供的另外...
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...
01. event_base_loop函数 一旦有了一个已经注册了某些事件的event_base(关于如何创建和注册事件请看笔记四),就需要让libevent等待事件并且通知事件的发生。 event_base_loop函数 /** Wait for events to become active, and run their callbacks. This is a more flexible version of event_base_dispatch(). ...
return (event_base_loop(event_base, 0));} 跟踪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,...
int event_base_dispatch(struct event_base *base); 1. 内部调用的event_base_loop, //@param: flags //等待IO事件 #define EVLOOP_ONCE 0x01 //非阻塞,直接返回 #define EVLOOP_NONBLOCK 0x02 //其他的线程中添加事件 #define EVLOOP_NO_EXIT_ON_EMPTY 0x04 ...
(" tcp_server_init error ");return-1;}structevent_base*base=event_base_new();//添加监听客户端请求连接事件structevent*ev_listen=event_new(base,listener,EV_READ|EV_PERSIST,accept_cb,base);event_add(ev_listen,NULL);event_base_dispatch(base);event_base_free(base);return0;}voidaccept_cb(...
int event_base_loop(struct event_base *, int); event_base_loop这个方法会比event_base_dispatch这个方法更加灵活一些。 第二个参数 EVLOOP_ONCE: 阻塞直到有一个活跃的event,然后执行完活跃事件的回调就退出。 EVLOOP_NONBLOCK : 不阻塞,检查哪个事件准备好,调用优先级最高的那一个,然后退出。
event_base_loop 函数: int event_base_loop(struct event_base *, int); 等待事件被触发,然后调用它们的回调函数。这是 event_base_dispatch的更灵活版本。默认情况下,这个循环会一直运行,直到没有添加的事件,或者直到调用了event_base_loopbreak()或者evenet_base_loopexit().你可以通过flags参数修改这个行为。