高性能I/O框架库Libevent

一、I/O框架库概述:I/O框架库以库函数的形式,封装了较为底层的系统调用,给应程序提供了一组更便于使用的接口,这些库函数往往比程序员自己实现的同样功能的函数 更合理、更高效、更健壮,因为它们经受住了真实网络环境下的高压测试,以及时间的考验。下面我们以Reactor模式实现,基于Reactor模式的I/O框架库包含以下几个组件:句柄(描述符)、时间多路分发器、

1、句柄

     I/O框架要处理的对象,即I/O事件、信号和定时事件,统一称为事件源。一个事件源通常和一个句柄绑定在一起,句柄的作用:当内核检测到就绪事件时,它将通过句柄来通知应用程序这一事件。在Linux环境下,I/O事件对应的句柄就是文件描述符,信号事件对应的句柄就是信号值。

2、事件多路分发器

    事件的到来使随机的、异步的,我们无法预知程序何时收到一个客户连接请求,又亦或收到一个暂停信号。所以程序需要循环地等待并处理事件,这就是事件循环。在事件循环中,等待事件一般使用I/O复用技术来实现。I/O框架库一般将系统支持的各种I/O复用系统调用封装成统一的接口,称为事件多路分发器。事件多路分发器demultiplex方法是等待事件的核心函数,其内部调用的是select、poll、epoll_wait等函数

二、时间处理器和具体事件处理器

事件处理器执行事件对应的业务逻辑,它通常包含一个或多个handle_event回调函数,这些回调函数在事件循环中被执行。I/O框架提供的事件处理器通常是一个接口,用户需要继承它来实现自己的事件处理器,即具体事件处理器。因此,事件处理器中的回调函数一般被声明为虚函数,以支持用户的扩展。

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值