通常,一旦没有挂起或活动事件,循环就会退出。 您可以 通过传递 EVLOOP_NO_EXIT_ON_EMPTY 标志---for 来覆盖此行为 例如,如果您要从其他线程添加事件。如果你 设置EVLOOP_NO_EXIT_ON_EMPTY,循环将继续运行,直到有人 调用 event_base_loopbreak() 或调用 event_base_loopexit() 或错误 发生。 完成后,如果 ev...
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时间非...
event_base_loopexit:如果tv参数不为空,则让event_base在给定时间之后停止循环。如果tv参数为NULL,event_base会立即停止循环,没有延时。如果event_base当前正在执行任何激活事件的回调,则回调会继续运行,直到运行完所有激活事件的回调之才退出。 event_base_loopbreak:event_base立即退出循环。它与event_base_loopexit(b...
1. event_base_loopexit(base, NULL) 如果当前正在为多个活跃事件调用回调函数,那么不会立即退出,而是等到所有的活跃事件的回调函数都执行完成后才退出事件循环 2. event_base_loopbreak(base) 如果当前正在为多个活跃事件调用回调函数,那么当前正在调用的回调函数会被执行,然后马上退出事件循环,而并不处理其他的活跃事...
← event_base_loop event_base_loopexit → 代码语言:txt 复制 © 1997–2017 The PHP Documentation Group Licensed under the Creative Commons Attribution License v3.0 or later. https://secure.php.net/manual/en/function.event-base-loopbreak.php ...
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在指定时间后立即停止,...
(conf, "poll"); //设置libevent中不使用锁,一个线程一个base的情况下能减少锁的开销 event_config_set_flag(conf,EVENT_BASE_FLAG_NOLOCK); //初始化配置libevent上下文 event_base *base = event_base_new_with_config(conf); event_config_free(conf);//配置完成后就可以释放配置的空间 if (base) ...
(conn);//父进程}return0;}voiddo_service(int conn){char recvbuf[1024];while(1){memset(recvbuf,0,sizeof(recvbuf));int ret=read(conn,recvbuf,sizeof(recvbuf));if(ret==0){//客户端关闭了printf("client close/n");break;}elseif(ret==-1)ERR_EXIT("read error");fputs(recvbuf,stdout...
intevent_base_loop(structevent_base*base,intflags){//设置为EVLOOP_NONBLOCK,那么event_loop只会处理当前已经激活的event,处理结束后就会退出event_loop//设置为EVLOOP_ONCE,那么event_loop就会等待到第一个事件超时,处理在这段时间内激活的event,直到所有激活的事件都处理完就退出event_loop//设置为其他值,那么...
structevent*ev;conststructtimevalone_sec = {1,0};// sec, usecvoidcb_timer_func(evutil_socket_t,short,void){if( bailout ) {event_base_loopbreak(eb); }elseif( !evtimer_pending(ev,NULL) ) {evtimer_del(ev);evtimer_add(ev, &one_sec); } } ...