博客专栏  >  架构   >  Libevent源码分析

Libevent源码分析

对Libevent这个网络库的一些源代码分析

关注
132 已关注
24篇博文
  • Libevent源码分析-----bufferevent工作流程探究

    和之前的《Libevent工作流程探究》一样,这里也是用一个例子来探究bufferevent的工作流程。具体的例子可以参考《Libevent客户端例子》,这里就不列出了。其实要做的例子也就是buffe...

    2014-09-17 17:06
    7697
  • Libevent源码分析-----更多evbuffer操作函数

    锁操作: 在前一篇博文可以看到很多函数在操作前都需要对这个evbuffer进行加锁。同event_base不同,如果evbuffer支持锁的话,要显式地调用函数evbuffer_enable...

    2014-09-16 23:22
    3769
  • Libevent源码分析-----evbuffer结构与基本操作

    对于非阻塞IO的网络库来说,buffer几乎是必须的。Libevent在1.0版本之前就提供了buffer功能。现在来看一下Libevent的buffer。 buffer相关结构体:

    2014-09-15 12:06
    4386
  • Libevent源码分析-----连接监听器evconnlistener

    基于event和event_base已经可以写一个CS模型了。但是对于服务器端来说,仍然需要用户自行调用socket、bind、listen、accept等步骤。这个过程有点繁琐,为此在2.0.2-a...

    2014-08-24 22:16
    4451
  • Libevent源码分析-----通用类型和函数

    Libevent定义了一系列的可移植的兼容类型和函数。这使得在各个系统上都有一致的效果,Libevent一般都会在兼容通用类型和函数的前面加上ev或evutil前缀。        在实现上,Libe...

    2014-08-23 18:16
    3275
  • Libevent源码分析-----与event相关的一些函数和操作

    Libevent提供了一些与event相关的操作函数。本文就重点讲一下这方面的源代码。   在Libevent中,无论是event还是event_base,都是使用指针而不会使用变量。实际上,如果...

    2014-08-21 22:49
    3016
  • Libevent源码分析-----管理超时event

    前面的博文已经说到,如果要对多个超时event同时进行监听,就要对这些超时event进行集中管理,能够方便地(时间复杂度小)获取、加入、删除一个event。 在之前的Libevent版本,Libeve...

    2014-08-19 11:05
    3164
  • Libevent源码分析-----Libevent时间管理

    Libevent采用的时间类型是struct  timeval,这个类型在很多平台都提供了。此外,Libevent还提供了一系列的时间操作函数。比如两个struct timeval相加、相减、比较大小...

    2014-08-18 15:57
    3296
  • Libevent源码分析-----超时event的处理

    Libevent允许创建一个超时event,使用evtimer_new宏。

    2014-08-17 11:32
    3861
  • Libevent源码分析-----evthread_notify_base通知主线程

    一般来说,是主线程执行event_base_dispatch函数。本文也是如此,如无特别说明,event_base_dispatch函数是由主线程执行的。 本文要说明的问题是,当主线程在执行event...

    2014-08-14 21:02
    4796
  • Libevent源码分析-----信号event的处理

    前面讲解了Libevent怎么对一个IO事件进行监听,现在来讲一下Libevent怎么监听信号。Libevent对于信号的处理是采用统一事件源的方式。简单地说,就是把信号也转换成IO事件,集成到Lib...

    2014-08-13 16:55
    3614
  • Libevent源码分析-----event优先级设置

    event_base允许用户对它里面的event设置优先级,这样可以使得有些更重要的event能够得到优先处理。可以通过event_base_priority_init函数设置event_base的优...

    2014-08-12 11:24
    2683
  • Libevent源码分析-----Libevent工作流程探究

    之前的博文讲了很多Libevent的基础构件,现在以一个实际例子来初步探究Libevent的基本工作流程。由于还有很多Libevent的细节并没有讲所以,这里的探究还是比较简洁,例子也相当简单。

    2014-08-11 22:32
    5688
  • Libevent源码分析-----跨平台Reactor接口的实现

    之前的博文讲了怎么实现线程、锁、内存分配、日志等功能的跨平台。Libevent最重要的跨平台功能还是实现了多路IO接口的跨平台(即Reactor模式)。这使得用户可以在不同的平台使用统一的接口。Lib...

    2014-08-09 17:40
    3767
  • Libevent源码分析-----配置event_base

    前面的博文都是讲一些Libevent的一些辅助结构,现在来讲一下关键结构event_base。           这里作一个提醒,在阅读Libevent源码时,会经常看到backend这个单词。其直...

    2014-08-08 20:15
    4839
  • Libevent源码分析-----event_signal_map

    因为event_signal_map结构体实在太简单了,所以不像event_io_map那样,有一个专门的文件。由于没有专门的文件,那么只能从蛛丝马迹上探索这个event_signal_map结构了。...

    2014-08-07 19:58
    2793
  • Libevent源码分析-----event_io_map哈希表

    上一篇博客说到了TAILQ_QUEUE队列,它可以把多个event结构体连在一起。是一种归类方式。本文也将讲解一种将event归类、连在一起的结构:哈希结构。 哈希结构由下面几个结构体一起配合工作:

    2014-08-06 16:47
    3734
  • Libevent源码分析-----TAILQ_QUEUE队列

    Libevent源码中有一个queue.h文件,位于compat/sys目录下。该文件里面定义了5个数据结构,其中TAILQ_QUEUE是使得最广泛的。本文就说一下这个数据结构。 TAILQ_QUE...

    2014-08-04 19:47
    4858
  • Libevent源码分析-----多线程、锁、条件变量(二)

    Libevent还支持对锁操作的一些检测,进而捕抓一些典型的锁错误。Libevent检查: 1. 解锁自己(线程)没有持有的锁 2. 在未解锁前,自己(线程)再次锁定一个非递归锁。   Li...

    2014-08-03 20:21
    4014
  • Libevent源码分析-----多线程、锁、条件变量(一)

    Libevent提供给用户的可见多线程API都在thread.h文件中。在这个文件提供的API并不多。基本上都是一些定制函数,像前面几篇博文说到的,为Libevent定制用户自己的多线程函数。对于Wi...

    2014-08-02 20:07
    6852

img博客搬家
img撰写博客
img专家申请
img意见反馈
img返回顶部