我们发现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...
1.event_init() struct event_base * 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()函数也...
/** * 返回一个指向 event_base 结构体的指针,同时没有任何参数 */ struct event_base * event_base_new(void) { struct event_base *base = NULL; //先置空 struct event_config *cfg = event_config_new(); //事件配置对象 if (cfg) { base = event_base_new_with_config(cfg); event_config...
(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 处理。 多线程/进程服务器同时为多个客户机提供应答服务。模型如下: 主线程持续等待客户端的连接请求,如果有连接,则创建新线程,并在新线程中提供为前例同样的问答服务。
event_init(); structevent evTime; // 设置定时事件 evtimer_set(&evTime, onTime, &evTime); structtimeval tv; tv.tv_sec = 1; tv.tv_usec = 0; // 添加定时事件 event_add(&evTime, &tv); // 事件循环 event_dispatch(); return0; ...
译自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 ...