为啥不能追求自己的爱好一辈子呢
分类: LINUX
2013-10-11 18:27:09
select
poll
epoll
kqueue
devpoll
evport
win32
struct event_base* event_base_new();
该函数检查环境变量,并且生成一个event_base的对象,他定义在
如果你需要对他进行额外的配置还有几个接口可以使用:
struct event_config *event_config_new();
struct evnet_base * event_base_new_with_config(const struct event_config* cfg);
void event_config_free(struct event_config* cfg);
当你通过event_config生成event_new后,你就可以释放event_config了。
设置event_config的api如下:
int event_config_avoid_method(struct event_config *cfg, const char *method);
该函数让event_base避免选择一种底层的事件通知方式,例如method=“select”
设置event_config结构的接口如下:
enum event_method_feature {
EV_FEATURE_ET = 0x01, //必须支持边界触发模式
EV_FEATURE_O1 = 0x02, //增加事件和删除事件,复杂度必须为O(1)
EV_FEATURE_FDS = 0x04,
}; //必须支持多种文件描述符,不只是socket
int event_config_require_features(struct event_config *cfg, enum event_method_feature feature);
enum event_base_config_flag {
EVENT_BASE_FLAG_NOLOCK = 0x01, //不加锁
EVENT_BASE_FLAG_IGNORE_ENV = 0x02, //不需要检查EVENT_*系列的环境变量
EVENT_BASE_FLAG_STARTUP_IOCP = 0x04, //windows,使用IOCP,完成端口
EVENT_BASE_FLAG_NO_CACHE_TIME = 0x08,
EVENT_BASE_FLAG_EPOLL_USE_CHANGELIST = 0x10, //使用epoll changelist,慎重使用
EVENT_BASE_FLAG_PRECISE_TIMER = 0x20
};
int event_config_set_flag(struct event_config *cfg, enum event_base_config_flag flag);
int event_config_set_num_cpus_hint(struct event_config *cfg, int cpus);
int event_config_set_max_dispatch_interval(struct event_config *cfg, const struct timeval *max_interval, int max_callbacks, int
fmin_priority);
还有两个函数是负责获取event_base的可以使用的底层方法:
const char **event_get_supported_methods(void);
获取正在使用的底层方法:
const char *event_base_get_method(const struct event_base *base);
enum event_method_feature event_base_get_features(const struct event_base *base);
void event_base_free(struct event_base *base);
设置优先级的:
int event_base_priority_init(struct event_base *base, int n_priorities);
int event_base_get_npriorities(struct event_base *base);//获取支持的优先级,例如返回值3,表示0,1,2,3
如果在你的程序中使用了fork,你想要继续使用event_base,你需要调用:
int event_reinit(struct event_base *base);
点击(此处)折叠或打开