//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");
}
libevent笔记-创建event_base
最新推荐文章于 2023-09-19 00:05:13 发布