当前位置: 代码迷 >> 综合 >> Libevent使用范例及代码说明
  详细解决方案

Libevent使用范例及代码说明

热度:56   发布时间:2024-01-25 14:20:59.0

 

//event和event_base是libevent的两个基础结构体
struct event ev;
struct event_base *base;
//申请一个新的event_base
base = event_base_new();
//设置ev,将fd回调函数OnAccept以及回调函数参数arg赋值到ev结构中
//event_set->event_assign
event_set(&ev, fd, EV_READ|EV_PERSIST, OnAccept, (void *)arg);
//将base赋值到ev结构中,ev->ev_base = base
event_base_set(base, &ev);
//主要作用是将ev结构添加到队列中
//event_add->event_add_nolock_->event_queue_insert_inserted
event_add(&ev, NULL);
//run forever
//event_dispatch 是程序的主体循环,我们注册的回调函数就在该循环体中执行
/*event_base_dispatch->event_loop->event_base_loop->event_process_active->event_process_active_single_queue->evcb_callback*/
event_base_dispatch(base);
//never running
//正常情况下不会走到这里,循环退出时会走到这里,回收资源
event_del(&ev);
event_base_free(base);