首页 > 代码库 > 高级I/O框架库libevent
高级I/O框架库libevent
libevent是基于reactor模式建立的,reactor由四部分构成:
句柄(文件描述符),时间多路分发器(I/O复用函数),
事件处理器(回调函数),reactor
libevent有如下特点:跨平台支持,同一事件源,线程安全;
所以第一步定义libevent实例:
struct event base *base = event_init();
接下来:因为libevent可以监听三种事件:I/O事件,信号事件,定时事件
所以定义事件可以用统一的event_new();
也可以用evsignal_new()/evtimer_new();
如果定义信号事件:
struct event *sig_ev = evsignal_new(base,SIGINT,sig_fun,NULL);
或者 struct event *sig_ev = event_new(base,SIGINT,EV_SIGNAL,sig_fun,NULL);
这里sig_fun是事件处理函数,如果要求不断地响应事件,可以将其设置为永久事件
即就是:EV_SIGNAL|EV_PERSIST;
下来就是注册事件,将事件添加至反应堆里,event_add(sig_ev,NULL);
第四步,事件循环,调用event_base_dispath(base);
之后当事件处理完将事件移除反应堆:event_free(sig_ev);
event_base_free(base);
差不多就是libevent处理事件的全过程。
高级I/O框架库libevent
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。