高级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处理事件的全过程。

时间: 2024-10-22 15:37:39

高级I/O框架库libevent的相关文章

JS_JavaScript 框架(库)

JavaScript 框架(库) JavaScript 高级程序设计(特别是对浏览器差异的复杂处理),通常很困难也很耗时. 为了应对这些调整,许多的 JavaScript (helper) 库应运而生. 这些 JavaScript 库常被称为 JavaScript 框架. 在本教程中,我们将了解到一些广受欢迎的 JavaScript 框架: jQuery Prototype MooTools 所有这些框架都提供针对常见 JavaScript 任务的函数,包括动画.DOM 操作以及 Ajax 处理

Qt高级——QTestLib单元测试框架

Qt高级--QTestLib单元测试框架 一.QTestLib简介 1.QTestLib简介 QTestLib是Qt提供的一种针对基于Qt编写的程序或库的单元测试框架.QTestLib提供了单元测试框架的基本功能,并提供了针对GUI测试的扩展功能. 2.QTestLib特性 QTestLib是为了简化QT程序或库的单元测试工作而设计的.QTestLib特性如下:A.轻量级:QTestlib只包含6000行代码和60个导出符号B.自包含:对于非GUI测试,QTestlib只需要Qt核心库的几个符号

Android 必须知道2018年流行的框架库及开发语言,看这一篇就够了!

导语 2017 已经悄悄的走了,2018 也已经匆匆的来了,我们在总结过去的同时,也要展望一下未来,来规划一下今年要学哪些新技术.这几年优秀Android的开源库不断推出,新技术层出不穷,需要我们不断去了解和掌握,在提高自身开发水平的同时,我们需要付出更多学习精力和时间.俗话说,打铁还需自身硬,为了在这个日新月异的技术时代为了生存不被淘汰,必须要求自身掌握的技术不断跟进时代脚步,所以我们必须付出才能得到回报,说没有时间去学习的人永远都会有找不完的借口.好了,闲话不多说了,下面一起来看看流行的技术

acl 网络通信与服务器框架库示例列表

跨平台网络通信及服务器框架库 --- "acl" 项目里有大量的测试及应用示例,主要有三个示例集合,如下: 1.acl/samples:该目录下的例子主要是基于 lib_acl 及 lib_protocol 两个库的例子-    1.1 acl: 打印当前 acl 库版本号程序-    1.2 aio/client: 非阻塞 io 客户端-    1.3 aio/server: 非阻塞 io 服务器-    1.4 base64: base64 编/解码程序-    1.5 btree

轻量级网络库libevent概况

Libevent is a library for writing fast portable nonblocking IO. libevent是一个为编写快速可移植的非阻塞IO程序而设计的. libevent组件 libevent包括了以下组件: 1. evutil Generic functionality to abstract out the differences between different platforms' networking implementations. 用于抽象

Zepto是一个轻量级的针对现代高级浏览器的JavaScript库

参考文献:http://www.html-5.cn/Manual/Zepto/ Source code on Github Zepto是一个轻量级的针对现代高级浏览器的JavaScript库

跨平台网络通信与服务器编程框架库(acl库)介绍

一.描述 acl 工程是一个跨平台(支持LINUX,WIN32,Solaris,MacOS,FreeBSD)的网络通信库及服务器编程框架,同时提供更多的实用功能库.通过该库,用户可以非常容易地编写支持多种模式(多线程.多进程.非阻塞.触发器.UDP方式)的服务器程序,WEB 应用程序,数据库应用程序.此外,该库还提供了常见应用的客户端通信库(如:HTTP.SMTP.ICMP.memcache.beanstalk),常见流式编解码库:XML/JSON/MIME/BASE64/UUCODE/QPCO

IOS一些高效的第三方框架库

MBProgressHUD ——进展指示符库 苹果的应用程序一般都会用一种优雅的,半透明的进度显示效果,不过这个API是不公开的,因此你要是用了,很可能被清除出AppStore.而 MBProgressHUD提供了一个替代方案,而且在用户角度上,实现的效果根本看不出和官方程序有什么差别.同时还提供了其他附加功能,比如虚拟进展 指示符,以及完成提示信息.整合到项目里也很容易,这里不细谈了. ASIHttpRequest ——HTTP Network库 iPhone当然也有自己的HTTP Netwo

HP-SOCKET TCP/UDP通信框架库解析

项目概述: HP-SOCKET是一套通用TCP/UDP通信框架,包括服务器.客户端.Agent组件:其目标是提供高性能.通用性.简易性.可扩展.可定制: 鉴于此,其仅实现基本的通用框架通信.数据收发功能,供上层应用直接简单使用的接口实现:而对于数据包完整性和协议解析等未处理, 也就意味着需要应用层自己处理一些数据包构造或解析等操作: 事实上目前只能支持windows平台: 1. 对于TCP通信模式下:服务器端和Agent均采用的是异步IO模型中的完成端口模型,客户端采用的是就绪IO通告模型中的W