高性能io框架库libevnet 简介

libevent是一款高性能、跨平台的事件驱动网络库,常用于网络通信和开源项目。本文介绍了libevent的基本概念、创建/销毁事件、bufferevent以及网络通信的相关操作,包括事件基础、事件添加、事件循环、事件释放和缓冲区管理。通过libevent,开发者可以实现基于事件的异步通信模型,利用回调机制高效处理网络请求。
摘要由CSDN通过智能技术生成

 

libevent 库简介

libevent 是一款事件驱动的网络开发包,由于采用c语言开发 ,体积小,跨平台,速度极快,大量开源项目使用了libevent比如谷歌浏览器,和分布式告诉缓存系统memcached,libevnet支持kqueue,select,poll,epoll,iocp(非阻塞的工作模式),事件内部机制完全独立于公开的额事件api,libevnet 支持跨平台,可在linux,windows 等平台上编译,

优点:精简,跨平台,线程安全,专注于网络通信

下载--解压--安装

源码包安装:REANME

./config  检查安装环境 生成makefile

make 编译,生成.o可执行文件

 sudo make install   将必要的资源拷贝到系统指定的目录

进入sample目录,运行demo验证 库安装使用的情况

编译使用库的.c时,需要加-levent选项

库名libevent.so  /usr/lib

特点:基于“事件”异步通信模型--回调

 

libevnet框架

创建 event_base(乐高的底座)

创建事件 event

将事件添加到 base上

循环监听事件满足

释放event_base

(1)创建 event_base(底座)

struct event _base *event_base_new(void);//创建函数;

struct event_base*base=evnet_base_new();

 

(2)创建事件

常规事件 event------>evnet_new();

 

bufferevent----------->bufferevnet_socket_new();

 

 

 

(3)将事件添加到base上

int event_add (struct *ev,const struct timeval *tv);

ev:event_new()函数返回的事件

TV:为null时,不会超时,意思是一直等到事件被触发,回调函数会被调用

       为非0,等待期间检查事件没有被触发,时间到回调函数依然会被调用

 

(4)循环监听事件满足

int event_base_dispatch(struct event_base *base);

event_base_dispatch(base);成功返回0,失败返回-1;

只有event_new 中指定了EV_PERSIST才持续触发,否则只触发一次就跳出循环

通常这样:EV_WRITE|EV_PERSIST  ,  EV_READ|EV_PERSIST

其他循环;

int event_base_loopexit(struct evnet_base *base,const struct timecal*tv);

在指定时间后停止循环

int event_base_loopbreak(struct evnet_base *base);立即停止循环

(5)释放event_base

void event_base_free(struct event_base*base);//释放函数;

event _base_free(base);

 

特征:基于事件的异步通信模型,所见皆事件,等某个条件到达时去执行某个函数(回调机制)-----回调

 

相关函数了解:

查看支持哪些多路io

const char ** evnet_get_supported_methods(void);

查看当前用的多路io

const char *event_base_get_method(const struct event_base *base);

查看fork()后子进程使用的event_base

int event_reinit(struct event_base *base);

成功0  失败-1;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值