
LIbevent
jyl_sh
多年从事IT项目的开发和管理工作,主要从事过电力、电信、邮政、教育、金融等行业的IT系统的开发建设及项目管理工作
展开
-
libevent学习笔记十五:VC2010编译libevent2.1.11版本的静态库x64
VC2010编译libevent2.1.11版本的静态库x64原创 2020-05-03 18:45:45 · 1661 阅读 · 0 评论 -
libevent学习笔记十四:libevent 信号处理实例代码
libevent学习笔记十四:libevent信号处理注意点前面讲到了libevent实现多线程的方法,然而在多线程的环境中注册信号事件,还是有一些情况需要小心处理,那就是不能在多个libevent实例上注册信号事件。依然冠名追加到libevent系列。以2个线程为例,做简单的场景分析。1> 首先是创建并初始化线程1的libevent...原创 2020-05-03 12:37:31 · 1152 阅读 · 0 评论 -
libevent学习笔记十三:让libevent支持多线程
libevent学习笔记十三:让libevent支持多线程Libevent本身不是多线程安全的,在多核的时代,如何能充分利用CPU的能力呢,这一节来说说如何在多线程环境中使用libevent,跟源代码并没有太大的关系,纯粹是使用上的技巧。1, 错误使用示例在多核的CPU上只使用一个线程始终是对不起CPU的处理能力啊,那好吧,那就多创建几个线程,比如下面的简单服务器场景 ...原创 2020-05-03 12:18:54 · 2603 阅读 · 0 评论 -
libevent学习笔记十二:libevent时间管理
libevent学习笔记十二:libevent时间管理为了支持定时器,Libevent必须和系统时间打交道,这一部分的内容也比较简单,主要涉及到时间的加减辅助函数、时间缓存、时间校正和定时器堆的时间值调整等。下面就结合源代码来分析一下。1, 初始化检测Libevent在初始化时会检测系统时间的类型,通过调用函数detect_monotonic()完成,它通过调用clock_get...原创 2020-05-03 11:19:30 · 1167 阅读 · 0 评论 -
libevent学习笔记十一:libevent支持I/O多路复用技术
libevent学习笔记十一:libevent支持I/O多路复用技术 Libevent的核心是事件驱动、同步非阻塞,为了达到这一目标,必须采用系统提供的I/O多路复用技术,而这些在Windows、Linux、Unix等不同平台上却各有不同,如何能提供优雅而统一的支持方式,是首要关键的问题,这其实不难,本节就来分析一下。1、统一的关键 Libevent支持多种I/O多...原创 2020-05-02 22:39:26 · 1178 阅读 · 0 评论 -
libevent学习笔记十:libevent集成定时器事件
libevent学习笔记十:libevent集成定时器事件 现在再来详细分析libevent中I/O事件和Timer事件的集成,与Signal相比,Timer事件的集成会直观和简单很多。Libevent对堆的调整操作做了一些优化,本节还会描述这些优化方法。1、集成到事件主循环 因为系统的I/O机制像select()和epoll_wait()都允许程序制定一个最大等待...原创 2020-05-02 20:53:36 · 1296 阅读 · 0 评论 -
libevent学习笔记九:libevent集成信号处理
libevent学习笔记九:libevent集成信号处理现在我们已经了解了libevent的基本框架:事件管理框架和事件主循环。上节提到了libevent中I/O事件和Signal以及Timer事件的集成,这一节将分析如何将Signal集成到事件主循环的框架中。1 ,集成策略——使用socket pair前一节已经做了足够多的介绍了,基本方法就是采用“消息机制”。在libevent中这...原创 2020-05-02 17:21:39 · 1201 阅读 · 0 评论 -
libevent学习笔记八:libevent事件主循环
libevent学习笔记八:libevent核心事件event原创 2020-05-02 16:52:55 · 1377 阅读 · 0 评论 -
libevent学习笔记七:libevent事件处理框架剖析
libevent学习笔记七:libevent事件处理框架剖析前面几节已经对libevent的事件处理框架和event结构体做了描述和介绍,现在是需要进一步的深入剖析的时候了,更深入的对libevent事件的详细处理流程进行解析和理解,本节具体的将分析libevent的事件处理框架event_base和libevent注册、删除事件的流程,可结合前一节libevent对event的管理的流程进行...原创 2020-05-02 14:10:16 · 1189 阅读 · 0 评论 -
libevent学习笔记六:libevent核心事件event
libevent学习笔记六:libevent核心事件event 前面对reactor模式、事件处理流程、libevent源代码结构等有了高层的认识后,接下来将详细介绍libevent的核心结构event,以及libevent对event的管理。1 、libevent的核心-event Libevent是基于事件驱动(event-driven驱动)的,单从名字也可以看到eve...原创 2020-05-02 11:05:49 · 1363 阅读 · 0 评论 -
libevent学习笔记五:libevent源代码文件组织结构
libevent学习笔记五:libevent源代码文件组织结构1 ,前言详细分析源代码之前,如果能对其代码文件的基本结构有个大概的认识和分类,对于代码的分析将是大有裨益的。本节内容不多,我想并不是说它不重要!2 ,源代码组织结构Libevent的源代码虽然都在一层文件夹下面,但是其代码分类还是相当清晰的,主要可分为头文件、内部使用的头文件、辅助功能函数、日志、libevent框架、...原创 2020-05-02 09:36:19 · 1048 阅读 · 0 评论 -
libevent学习笔记四:Libevent整体处理流程
libevent学习笔记四:Libevent整体处理流程 前面介绍了1 、基本流程基本应用场景也是使用libevnet的基本流程,下面来考虑一个最简单的场景,使用livevent设置定时器,应用程序只需要执行下面几个简单的步骤即可。1)首先初始化libevent库,并保存返回的指针1 struct event_base * base = event_init();实...原创 2020-05-02 09:15:31 · 1294 阅读 · 0 评论 -
libevent学习笔记三:Reactor模式
libevent学习笔记三:Reactor模式 整个libevent本身就是一个Reactor,为因此本节将专门对Reactor模式进行必要的介绍,并列出libevnet中的几个重要组件和Reactor的对应关系,在后面的章节中可能还会提到本节介绍的基本概念。1,Reactor的事件处理机制首先来回想一下普通函数调用的机制:程序调用某函数?函数执行,程序等待?函数将结果和控...原创 2020-05-01 21:54:52 · 1070 阅读 · 0 评论 -
libevent学习笔记二:libevent基础知识
libevent学习笔记二:libevent基础知识 接着前面的笔记一,简单的介绍了libevent的简介。本笔记将继续整理相关的libevent知识内容。一、关于libevent libevent是一个轻量级的开源的高性能的事件触发的网络库,适用于运行在windows、linux、bsd、mac osx等多种平台,内部使用select、epoll、kqueue等...原创 2020-05-01 16:08:36 · 1377 阅读 · 0 评论 -
libevent学习笔记之一:Libevent简介
libevent学习笔记之一:Libevent简介 Libevent 是一个用C语言编写的、轻量级的开源高性能事件通知库,主要有以下几个技术点:事件驱动( event-driven),高性能;轻量级,专注于网络,不如同类产品的 ACE 那么臃肿庞大;但源代码相当精炼、易读;现在支持跨平台、可以在Windows、 Linux、 *BSD 和 Mac Os等环境下运行;支持多种 I/O...原创 2020-05-01 13:40:54 · 1243 阅读 · 0 评论