libevent笔记-创建event_base

//libevent笔记-event_base
//转载请注明出处: yuliying的csdn博客.

//event_base是libevent事件机制的核心.管理事件循环和所有事件.
//如果event_base被设置为使用锁,那么在多线程里访问它是安全的,但是事件循环只能运行在一个线程里面.
//如果你想在多线程里都有事件循环,需要在每个线程创建一个event_base.

#include <event2/event.h>

int main(){
	//根据默认设置创建一个event_base
	//struct event_base * base = event_base_new();
	
	//创建event_base的配置
	struct event_config * config = event_config_new();
	
	//给配置设置一些属性.可以是以下这些属性的组合.
	/*
	enum event_base_config_flag {
		EVENT_BASE_FLAG_NOLOCK = 0x01,        //不要给event_base上锁,只在单线程访问event_base可以设置.
		EVENT_BASE_FLAG_IGNORE_ENV = 0x02,
		EVENT_BASE_FLAG_STARTUP_IOCP = 0x04,
		EVENT_BASE_FLAG_NO_CACHE_TIME = 0x08, //不缓存时间,在每个超时事件之后重新读取系统时间.
		EVENT_BASE_FLAG_EPOLL_USE_CHANGELIST = 0x10,
		EVENT_BASE_FLAG_PRECISE_TIMER = 0x20
	};*/
	//event_config_set_flag( config , flag );
	
	//.......还有其他的一配置设置函数.
	
	//使用带配置的方式创建event_base
	struct event_base * base = event_base_new_with_config(config);
	
	//libevent支持给每个事件设置一个优先级,默认设置下,libevent所有事件都是同一个优先级.
	//我们可多给event_base多设置一些优先级范围. (1 <= n_priorities <= EVENT_MAX_PRIORITIES)
	//每个事件的优先级可设置范围为 ( 0 <= x <= n_priorities - 1 ) , 0 的优先级最高.
	int n_priorities = 10;
	event_base_priority_init( base , n_priorities );
	
	//释放event_config结构
	event_config_free(config);
	
	//释放event_base结构
	event_base_free(base);
	
	//获取libevent在当前系统上支持哪些多路复用机制.
	const char ** methods = event_get_supported_methods();
	printf("we support: ");
	int i;
	for (i=0; methods[i] != NULL; ++i) {
		printf("%s\t", methods[i]);
	}
	printf("\n");
	
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值