![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
libevent深入浅出
文章平均质量分 60
libevent深入浅出
爱吃红萝卜的小白兔
这个作者很懒,什么都没留下…
展开
-
集成定时器事件
/common_timeout_list *数组,存放不同超时时长的common_timeout_list的指针 /** The number of entries used in common_timeout_queues */ int n_common_timeouts;//common_timeout_queues中实际的元素个数 /** The total size of common_timeout_queues. */ int n_common_timeouts_allocated;原创 2023-04-17 17:36:41 · 547 阅读 · 0 评论 -
支持多种I/O多路复用技术
Libevent的核心是事件驱动、同步非阻塞,为了达到这一目标,必须采用系统提供的 I/O多路复用技术,而这些在 Windows、Linux、Unix 等不同平台上却各有不同,如何能提供优雅而统一的支持方式,就是要思考的一个关键问题。原创 2023-04-17 17:21:03 · 77 阅读 · 0 评论 -
事件主循环
调用event_new接口创建对应的事件,传入的回调类型是void (*cb)(evutil_socket_t, short, void *),在执行回调时需要传入这几个参数(句柄、事件触发类型、自定义参数),下面看下这几个参数分别是如何获取到的。激活队列是一个优先级队列,当事件被激活时会根据事件的优先级把事件回调插入到激活队列。1)遍历base->activequeues,依次获取对应的优先级队列(优先级值越小优先级越高,遍历时是从下标为0 的元素开始遍历的)处理激活队列中的事件,大致按照下面的流程。原创 2023-04-17 17:07:15 · 380 阅读 · 0 评论 -
事件处理框架
然后,对event_config调用其它函数,设置所需要的event_base特征。最后,调用 event_base_new_with_config()创建新的 event_base。函数功能:函数将 ev 注册到 ev->ev_base 上,事件类型由 ev->ev_events 指明,如果注册成功,ev将被插入到已注册链表中;创建一个 event_base 对象也既是创建了一个新的 libevent 实例,event_base_new()函数分配并且返回一个新的具有默认设置的 event_base。原创 2023-04-17 16:56:10 · 924 阅读 · 0 评论 -
基本使用场景与数据流转过程
Libevent的使用比较的简单,基本上就是需要下面几步就可以1)创建一个struct event_base对象2)注册要监控的事件以及设置对应的回调函数3)开启事件循环。原创 2023-04-17 16:40:45 · 231 阅读 · 0 评论 -
Reactor设计模式
Reactor模式是高性能I/O设计中,常用的设计模式。其中心思想是将所有要处理的I/O事件注册到一个中心I/O多路复用器上,同时主线程阻塞在多路复用器上,一旦有I/O事件到来或是准备就绪,多路复用器将返回并将相应I/O事件分发到对应的处理器中。原创 2023-04-14 09:52:24 · 1315 阅读 · 0 评论 -
libevent简介
一、libevent简介Libevent 是一个轻量级的开源高性能网络库,具有下面的优点:事件驱动(event-driven),高性能轻量级,专注于网络,不如 ACE 那么臃肿庞大源代码相当精炼、易读跨平台,支持 Windows、Linux、*BSD 和 Mac Os支持多种 I/O 多路复用技术, epoll、poll、dev/poll、select 和 kqueue 等支持 I/O,定时器和信号等事件支持设置事件的优先级原创 2023-04-17 16:32:09 · 214 阅读 · 0 评论 -
基于libevent实现调度器
1)事件保序2)实现异步接口。原创 2023-04-17 16:02:47 · 871 阅读 · 0 评论