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

libevent源码分析

libevent是一款使用C语言的网络库,支持跨平台移植,一个轻量级的网络库

关注
39 已关注
31篇博文
  • libevent源码分析---让libevent支持多线程

    Libevent本身不是多线程安全的,在多核的时代,如何能充分利用CPU的能力呢,这一节来说说如何在多线程环境中使用libevent,跟源代码并没有太大的关系,纯粹是使用上的技巧。 1 错误使用示例 ...

    2014-03-07 20:40
    2593
  • libevent源码分析--evbuffer和bufferevent的关系

    在libevent中还有一个很重要的部分。evbuffer和bufferevent。 evbuffer是一个缓冲区,用户可以向evbuffer添加数据,evbuffer和bufferevent经常一起...

    2014-03-04 20:55
    3317
  • libevent源码分析---回顾主要的结构体

    以前忘记说明,这里源码分析使用的是libevent库的1.4.12-stable版本,在2.0以上的版本都是4W+行,过于庞大,网络上看到关于libevent库中几个重要的结构体关系图,很清楚很好,感...

    2014-02-23 09:20
    1703
  • libevent源码分析-- queue.h中TAILQ_QUEUE的理解

    libevent中的例子中使用的是FreeBSD下的queue.h,在linux的/usr/include/sys/queue.h也有该头文件,但是是一个缩减版本,而且没有看到queue 的acces...

    2014-02-21 17:08
    4325
  • libevent源码分析--I/O事件

    本文将从一个使用libevent的小例子出发,解释libevent处理事件的流程. 例子如下: 01.static void fifo_read(int fd, short event, voi...

    2014-02-21 12:16
    1683
  • libevent源码分析--定时器和信号事件处理

    Timer事件 反应堆event_base包含了一个最小堆min_heap结构体的实例,以此维护注册到这个反应堆实例的定时器事件: view sourceprint? 1.struct eve...

    2014-02-21 11:44
    2685
  • libevent源码分析--libevent库对信号事件的处理

    信号的处理在libevent中也是一个很重要的部分,同时处理的也很巧妙,这里根据自己的理解分析其堆信号的处理。和信号相关的几个重要API都是如何调用的。 这是网上关于libevent处理信号的过程图...

    2014-02-20 21:24
    1989
  • libevent源码分析--如何将定时器和信号事件都集合到I/O复用中

    我的理解:        在I/O多路复用机制用(这里使用epoll作为例子),epoll_wait在一定的时间内监听需要受到关注的套接字,如果只是关注I/O事件,这样就会很简单,在设置时间的时候没有...

    2014-02-18 21:58
    1573
  • libevent源码分析---时间管理模块

    一、在event_base_loop()函数中有和时间相关的部分:         其中tv_cache用来记录时间缓存的,base->tv_cache.tv_sec = 0; 在这里讲时间缓冲清空,...

    2014-02-18 19:48
    1379
  • libevent源码分析--epoll_add()函数

    首先看看add函数实在event_add函数中调用的,肯定是evsel->add的方式调用的。 259 static int 260 epoll_add(void *arg, struct even...

    2014-01-14 17:11
    1942
  • libevent源代码分析——event_dispatch() (二)

    在上篇文章中介绍关于event_dispatch的大体框架,这里对其中的几个重要的函数解释说明 1、timeout_correct(base,&tv) static void 889 timeout...

    2014-01-14 15:19
    1542
  • libevent源代码分析--event_dispatch() (一)

    event_dispatch这个函数是以上所有处理都结束以后,最后的一个借口调用,其实和这个函数类似的函数有好几个,接下来一一分析。 int 405 event_dispatch(void) 40...

    2014-01-14 14:44
    4108
  • libevent源码分析--event_add()函数

    event_add是第三个函数,函数参数ev是指向要注册的事件,tv是超时时间, 函数将ev注册到ev->ev_base上,事件类型由ev->ev_events指明。如果注册成功,ev讲被插入到已经注...

    2014-01-13 22:14
    2776
  • libevent源码分析--event_set()函数

    如果按照正常使用libevent库的流程来说,首先调用event_init()函数,然后调用event_set()函数,然后event_add()函数,然后是event_dispatch()函数。 ...

    2014-01-13 22:05
    4201
  • libevent源码分析--event_init()函数

    尝试着解释几个重要的函数,首先是event_inint()函数,这个函数式最初就需要使用的函数,此函数初始化了一个全局的变量current_base,也就是event_base,默认情况下所有的eve...

    2014-01-13 21:20
    4412
  • libevent源码分析--事件处理框架

    前面已经对libevent的事件处理框架和event结构体做了描述,现在是时候剖析libevent 对事件的详细处理流程了,本节将分析libevent的事件处理框架event_base和libeven...

    2014-01-13 11:10
    1666
  • libevent源码分析--核心部分event

    对事件处理流程有了高层的认识后,本节将详细介绍libevent 的核心结构event,以及 libevent对event的管理。 1 libevent的核心-event Libevent是基于事件驱...

    2014-01-13 10:21
    1838
  • libevent源码分析--代码结构

    Libevent的源代码虽然都在一层文件夹下面,但是其代码分类还是相当清晰的,主要可分为 头文件、内部使用的头文件、辅助功能函数、日志、libevent 框架、对系统I/O多路复用机 制的封装、信号管...

    2014-01-13 10:05
    1993
  • libevent源码分析---基本使用场景和事件流程

    当应用程序向libevent 注册一个事件后,libevent 内部是怎么样进行处理的呢?下面的 图就给出了这一基本流程。 1)  首先应用程序准备并初始化event,设置好事件类型和回调函数;这对应...

    2014-01-13 10:01
    2145
  • libevent的使用--socket异步编程

    这篇文章介绍下libevent在socket异步编程中的应用。在一些对性能要求较高的网络应用程序中,为了防止程序阻塞在socket I/O操作上造成程序性能的下降,需要使用异步编程,即程序准备好读写的...

    2014-01-12 09:26
    1654

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