初始化event_base之前调用evthread_use_windows_threads()即可 evthread_use_windows_threads();structevent_base*ev_base=event_base_new();
1. event_base_loopexit(base, NULL) 如果当前正在为多个活跃事件调用回调函数,那么不会立即退出,而是等到所有的活跃事件的回调函数都执行完成后才退出事件循环 2. event_base_loopbreak(base) 如果当前正在为多个活跃事件调用回调函数,那么当前正在调用的回调函数会被执行,然后马上退出事件循环,而并不处理其他的活跃事...
int event_base_loopexit(struct event_base *base, const struct timeval *tv); int event_base_loopbreak(struct event_base *base); struct timeval { long tv_sec; long tv_usec; }; 两个函数的区别是如果正在执行激活事件的回调函数, 那么event_base_loopexit将在事件回调执行结束后终止循环(如果tv时间非...
通常,一旦没有挂起或活动事件,循环就会退出。 您可以 通过传递 EVLOOP_NO_EXIT_ON_EMPTY 标志---for 来覆盖此行为 例如,如果您要从其他线程添加事件。如果你 设置EVLOOP_NO_EXIT_ON_EMPTY,循环将继续运行,直到有人 调用 event_base_loopbreak() 或调用 event_base_loopexit() 或错误 发生。 完成后,如果 ev...
event_base_loopexit:如果tv参数不为空,则让event_base在给定时间之后停止循环。如果tv参数为NULL,event_base会立即停止循环,没有延时。如果event_base当前正在执行任何激活事件的回调,则回调会继续运行,直到运行完所有激活事件的回调之才退出。 event_base_loopbreak:event_base立即退出循环。它与event_base_loopexit(...
@see event_base_loopexit(), event_base_dispatch(), EVLOOP_ONCE, EVLOOP_NONBLOCK */ int event_base_loop(struct event_base *base, int flag); //while(1) { ... } 功能: 等待事件被触发, 然后执行对应的回调函数 参数: base: event_base_new的返回值 flag...
EVLOOP_NO_EXIT:没有事件仍不退出,而是由其他函数触发退出 第二个函数的作用是相同的,等效于使用默认的flags。 停止loop int event_base_loopexit (struct event_base *base, const struct timeval *tv); int event_base_loopbreak (struct event_base *base); 第一个函数要求event_base在指定时间后立即停止,...
//helloworld.cpp #include <sys/signal.h> #include <event.h> void signal_cb(int fd, short event, void* argc){ event_base* base = (event_base*)argc; timeval delay = {2,0}; printf("Caught an interrupt signal; exiting cleanly in two seconds ...\n"); event_base_loopexit(base, &...
event_base_loopbreak()让event_base立即退出循环。它与event_base_loopexit(base,NULL)的不同在于,如果event_base当前正在执行激活事件的回调,它将在执行完当前正在处理的事件后立即退出。注意event_base_loopexit(base,NULL)和event_base_loopbreak(base)在事件循环没有运行时的行为不同:前者安排下一次事件循环在下...