赞
踩
libevent的使用方法
1.首先调用event_init()函数或者event_base_new()创建一个event_base对象。一个event_base相当于一个reactor实例。
2.创建具体的事件处理器。并设置他们所从属的reactor实例.evsignal_new(),和evtimer_new()等分别用于创建信号和定时器事件或其他事件。统一入口时event_new()
3.调用event_add函数,将事件处理器添加到注册事件队列中,并将该事件处理器对应的事件添加到事件多路分发器。event_add函数相当于Reactor中的register_handler方法。
4.调用event_base_dispatch函数来执行事件循环。
5.事件循环结束。使用free系列的函数来释放系统资源。
#include <event.h> } #include <iostream> using namespace std; void timeout_cb(int fd, short event, void* argc) { cout << "time out!" << endl; } int main() { WSADATA wsaData; WSAStartup(MAKEWORD(2, 2), &wsaData);//成功返回0 struct event_base* base = event_init(); timeval tv = { 1,0 }; //event_new //struct event* timeout_event = evtimer_new(base, timeout_cb, NULL); struct event* timeout_event = event_new(base, -1, EV_TIMEOUT | EV_PERSIST, timeout_cb, NULL); event_add(timeout_event, &tv); event_base_dispatch(base); event_add(timeout_event, &tv); event_free(timeout_event); event_base_free(base); WSACleanup(); return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。