libevent--事件管理、缓存管理

libevent是一个轻量级的开源高性能网络库,主要由事件管理、缓存管理、缓存事件,DNS,http这几部分构成:

事件管理:
主要涉及2个结构体

event:一个单独的事件,可以通过event_new创建一个新的事件,或者是event_assign重置一个时间

event_base:保存所有事件的消息与状态,并且进行事件轮询
可以通过event_base_new创建一个base
event_base_dispatch():进行事件循环

缓存管理:
主要涉及的结构体有bufferevent,evbuffer

bufferevent:缓存管理器,每个对应的事件都有一个缓存管理器(如网络时间中的socket对应一个缓存管理器,包含输入输入缓冲区)
evbuffer:数据缓冲区

进一步理解:

bufferevent包含input和output缓冲区,两个缓冲区都是evbuffer类型的,一个bufferevent对应一个事件,bufferevent可以设置相应的事件回调函数(bufferevent_setcb设置),其主要针对事件的管理
bufferevent_socket_new()这个函数可以为一个socket添加是一个缓存管理器,在调用成功的时候,bufferevent_socket_new函数内部通过调用event_assign函数将socket添加到事件管理器event中

event_base类型可以保存多个事件的相关信息和状态,一旦事件发生,就会调用相应的回调函数进行处理,可以通过event_new创建一个事件,event_add添加一个事件到事件管理器

关于回调函数的设置:libevent的回调函数是在libevent的事件管理器event_base中的时间发生后调用的,有两种方式设置事件的回调函数

1)在创建event调用event_new函数时候,指定回调函数
2)再为一个事件创建缓存管理器的时候调用bufferevent_setcb设置其回调函数

当前只是初步的认识,后期有待深入理解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值