libevent的简单使用

本文详细介绍了libevent库的基本使用流程,包括初始化event_base、创建事件处理器、添加事件到事件队列、执行事件循环以及清理资源。通过具体示例展示了如何使用libevent实现定时器功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值