我们发现event_init()工作量很少,只是调用event_base_new()函数,所以真正初始化event_base的工作是在event_base_new()函数内完成。 event_base_new() structevent_base *event_base_new(void)//初始化libevent的event_base{inti;structevent_base *base;if((base=calloc(1,sizeof(structevent_base))) == N...
event_init(void) { struct event_base *base = event_base_new(); if (base != NULL) current_base = base; return (base); } event_init()函数主要调用event_base_new()函数,返回event_base结构体;其实,到后面会发现,我们直接调用event_base_new()函数也是可以的; 2.event_base_new() struct...
} return base; } 可以注意到一点,cfg返回以后传给了event_base_new_with_config,也就是要想创建event_base对象,那需要先读取一些配置信息,生成一个 event_config对象,而且这个配置对象只是为了创建event_base,创建完成后就会释放。 此处也遵循了:谁调用谁释放的原则。 A:其中 event_config_new 配置了那些东西 ...
(3)event_base_dispatch():启动事件循环和事件分发 这个函数会阻塞当前线程,用户可以在事件回调函数中通过event_base_loopbreak()来中断。如果不希望当前线程被堵塞也可以使用event_base_loop()函数。注意,千万不要在回调函数中清理event_base。 代码示例: //创建事件循环ev_base_ =event_base_new();if(!ev_bas...
g_pEventBase=event_init(); clock_handler(0,0,(void*)0); return0; } 2.2.2 基本函数介绍 evtimer_set: 设置定时器事件。 evtimer_add: 增加定时器时间。 3 源代码简介 Libevent在底层select、pool、kqueue和epoll等机制基础上,封装出一致的事件接口。可以注册可读、可写、超时等事件, 指定回调函数;当事...
每一个使用libevent的程序,都需要包含<event.h>头文件,并且需要传递-levent标志给连接器linker。在使用任何 库函数之前,需要先调用event_init()或者event_base_new()函数制执行一次libevent库的初始化。 3. 事件通知 对于每一个你想监视的文件描述符,你必须声明一个事件结构并且调用event_set()去初始化结构中的...
(1) a new Connection 进来,用 fork() 产生一个 Process 处理。 (2) a new Connection 进来,用 pthread_create() 产生一个 Thread 处理。 多线程/进程服务器同时为多个客户机提供应答服务。模型如下: 主线程持续等待客户端的连接请求,如果有连接,则创建新线程,并在新线程中提供为前例同样的问答服务。
译自http://www.wangafu.net/~nickm/libevent-book/Ref2_eventbase.html 转自:http://blog.sina.com.cn/s/blog_56dee71a0100qdxx.html 使用libevent函数之前需要分配一个或者多个event_base结构体。每个event_base结构体持有一个事件集合,可以检测以确定哪个事件是激活的。
* create a new structure holding whatever information is needed to * run the backend, and return it. The returned pointer will get * stored by event_init into the event_base.evbase field. On failure, * this function should return NULL. */void*(*init)(struct event_base*);/** Enable ...
3.1.7 event_base_new structevent_base*event_base_new(void); Initialize the event API. Use event_base_new() to initialize a new event base, but does not set the current_base global. If using only event_base_new(), each event added must have an event base set with event_base_set()...