原文:Libevent源码分析—event_base_dispatch()

我们知道libevent是一个Reactor模式的事件驱动的网络库。 到目前为止,我们已经看了核心的event和event base结构体的源码,看了初始化这两个结构体的源码,看了注册event的源码,也将event注册到I O多路复用监听的事件上了。现在准备工作都做好了,下面就是看运行时的主循环了,在这个主循环中,是如何检测事件 分发事件 调用事件的回调函数的。这一步就是libevent的核心 ...

2017-06-01 17:51 0 8549 推荐指数:

查看详情

Libevent源码分析event_add()

接下来就是将已经初始化的event注册到libevent的事件链表上,通过event_add()来实现,源码位于event.c中。 event_add() 这个函数主要完成了下面几件事: 1.将event注册到event_base的I/O多路复用要监听的事件中 2. ...

Thu Jun 01 23:30:00 CST 2017 0 2896
Libevent源码分析event_set()

初始化完event_base后,下面要初始化event,通过调用event_set()实现 。相关源码位于event.c event_set() 通过传入的参数:fd, events, 回调函数,arg设置event的相应成员,并初始化event在小根堆中的索引 ...

Tue May 30 19:54:00 CST 2017 0 1760
Libevent源码分析event_init()

下面开始看初始化event_base结构的相关函数。相关源码位于 event.c event_init() 首先调用event_init()初始化event_base结构体 我们发现event_init()工作量很少,只是调用 ...

Tue May 30 19:43:00 CST 2017 0 1839
libeventevent_base

  event_baselibevent的事务处理框架,负责事件注册、删除等,属于Reactor模式中的Reactor。 event_base结构体   event_base结构体定义于<event_internal.h>中:   其中值得注意的是evsel ...

Tue Sep 22 19:45:00 CST 2015 0 3506
libevent源码分析event_assign、event_new

libevent中,获取event类型对象的方法有两种,event_assign、event_new 1、event_assign() 实现: 其实event_assign的作用就是把给定的event类型对象的每一个成员赋予一个指定的值 ...

Tue Sep 13 19:45:00 CST 2016 0 5642
libevent源码分析event_add、event_del

event_add、event_del两个函数分别是使event生效和失效的,下面就来看一下两个函数的实现。 event_add 这里以epoll作为后端来举例分析event_add函数的调用流程: event_del 这里以epoll作为后端来分析 ...

Sat Jan 21 09:34:00 CST 2017 0 3997
libevent源码学习(13):事件主循环event_base_loop

目录开启事件主循环执行事件主循环校对时间 阻塞/非阻塞处理激活队列中的event事件主循环的退出event_base_loopexitevent_base_loopbreak开启事件主循环 在libevent中,事件主循环的作用就是执行一个循环,在循环中监听事件以及超时的事件 ...

Mon Mar 15 20:15:00 CST 2021 0 466
libevent源码分析(一)

分析libevent的源代码,我的想法的是先分析各种结构体,struct event_base、struct event,然后是event_base_new函数、event_new函数、event_add函数,最后分析event_base_dispatch函数。 一、各种结构体 ...

Sat Jul 23 23:22:00 CST 2016 0 2854
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM