今天開始学习Libevent 。

Libevent 是开源社区的一款高性能I/O框架库。

主要特点有:

1 跨平台。

2 统一事件源

3 线程安全

4 基于Reactor

今天主要进行了Libevent的安装,以及利用libevent框架编写一个间隔1s打印 Hello Libevent!

信息的程序。

首先是安装:

1 下载libevent源代码,下载地址http://libevent.org/。我下载的版本号是2.0 stable版本号。下载的文件格式是tar.gz包

2 进入刚下载得到的tar.gz包的父母录,运行 tar -zxvf **.tar.gz。 解压得到一个文件夹,进入这个文件夹。

3 依次运行下列命令,就可以完毕安装

$ ./configure
$ make
$ make verify # (optional)
$ sudo make install

測试代码的流程是

创建Reactor实例(event_base) -》创建定时器的事件处理器-》将事件处理器增加注冊事件列表-》分发事件 -》释放系统资源。

代码例如以下:

#include <sys/signal.h>
#include <event.h> struct event_base* base = NULL;
struct event* signal_event = NULL;
struct event* timeout_event = NULL;
timeval tv = {0,0}; void signal_cb (int fd, short event, void* argc)//信号回调函数
{
struct event_base* base = (event_base*) argc;//获取传递进来的Reactor对象
struct timeval delay = { 2,0};//设置延时结构体。延时时间2s
printf("Caught an interrupt signal; exciting cleanly in two seconds...\n");
event_base_loopexit (base,&delay);
} void timeout_cb (int fd,short event, void* argc)
{
printf("Hello Libevent!\n");
event_add(timeout_event,&tv);
} int main()
{
event_base* base = event_init();//生成Reactor实例 signal_event = evsignal_new(base,SIGINT,signal_cb,base);//生成SIGINT信号的事件处理器
event_add(signal_event,NULL);//将事件处理器增加到注冊事件队列 tv.tv_sec = 1;
tv.tv_usec = 0;
timeout_event = evtimer_new(base,timeout_cb,NULL);//生成定时器处理器
event_add(timeout_event,&tv);//将定时器处理器增加注冊事件队列 event_base_dispatch(base);//分发事件 event_free(timeout_event);
event_free(signal_event);
event_base_free(base);
}
~

程序运行结果截图

Libevent 学习笔记 (1)——Libevent 2.0安装与简单演示样例的更多相关文章

  1. [hadoop系列]Pig的安装和简单演示样例

    inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish ).(来源:http://blog.csdn.net/inkfish) Pig是Yaho ...

  2. Thrift的安装和简单演示样例

    本文仅仅是简单的解说Thrift开源框架的安装和简单使用演示样例.对于具体的解说,后面在进行阐述. Thrift简述                                           ...

  3. RHEL5 X86-64上安装Oracle 11gR2演示样例与总结

    进入Oracle DBA行业也有好几年了,可是说到安装Oracle的经验,我还真不是特别多,印象中刚開始每次安装都有点磕磕碰碰,随着接触Oracle的时间越来越长,各方面的原理.机制也都有一定的了解后 ...

  4. 【传智播客】Libevent学习笔记(一):简介和安装

    目录 00. 目录 01. libevent简介 02. Libevent的好处 03. Libevent的安装和测试 04. Libevent成功案例 00. 目录 @ 01. libevent简介 ...

  5. MongoDB 学习笔记(一):安装及简单shell操作

    一.说明 1.该系列MongoDB学习笔记的学习环境采用的MongoDB版本为mongodb-win32-i386-2.4.6,操作系统为win7. 二.安装 1.新建两个目录,分别是D:\Insta ...

  6. 在VC6.0中多线程编程演示样例(带同步信号量)

    直接上代码: #include <windows.h>//必要的头文件,使用Windows API函数 #include <stdio.h> int index = 0; in ...

  7. python3.4学习笔记(十六) windows下面安装easy_install和pip教程

    python3.4学习笔记(十六) windows下面安装easy_install和pip教程 easy_install和pip都是用来下载安装Python一个公共资源库PyPI的相关资源包的 首先安 ...

  8. python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑

    python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件?当我们点开下载页时, 一般 ...

  9. Typescript 学习笔记一:介绍、安装、编译

    前言 整理了一下 Typescript 的学习笔记,方便后期遗忘某个知识点的时候,快速回忆. 为了避免凌乱,用 gitbook 结合 marketdown 整理的. github地址是:ts-gitb ...

随机推荐

  1. 能力 or say 职业 规划

    2019.5.8 黑盒测试,白盒测试,接口测试,自动化测试,性能测试..  往测试工程师发展,再是测试开发,高级测试开发..  要是真的喜欢前端,可以再转吧.前端后端应该要清楚它们的区别 前端:广度, ...

  2. Python/Django 批量下载Excel

    一.前提 项目上需求的变更总是时时发生的,应对需求的我们,也只能变更我们代码,所以.继前两篇之后,我们的批量下载诞生了 二.安装 本文使用zipstream库进行压缩,安装方式:pip install ...

  3. asp.net core 2.0 Json结果的格式

    asp.net core 2.0 默认返回的结果格式是Json, 并使用json.net对结果默认做了camel case的转化(大概可理解为首字母小写). 这一点与老.net web api 不一样 ...

  4. 【BZOJ3294/洛谷3158】[CQOI2011]放棋子(组合数+DP)

    题目: 洛谷3158 分析: 某OIer兔崽子的此题代码中的三个函数名:dfs.ddfs.dddfs(充满毒瘤的气息 显然,行与行之间.列与列之间是互相独立的.考虑背包,用\(f[k][i][j]\) ...

  5. 【Codeforces】383.DIV2

    昨天一场CF发挥不好.抽点时间总结一下,然后顺带算是做个题解. 第一题水题 第二题思路很清晰,大概十分钟就想出来规模100000明显复杂度最多nlog所以只能一遍loop然后里利用map统计得到后面的 ...

  6. jsp之servlet模板问题

    如果你在web项目下创建一个Servlet类,那么它会自带很多东西,比如有很多的注释,还有很多out.println()语句等.可能这些东西都不是你需要,这样看起来就会比较的令人不爽.下面的话就教大家 ...

  7. ffmpeg rtp时间戳

    ffmpeg rtp时间戳 ffmpeg  c  一.介绍 在ffmpeg中,每帧都会存在一个pts用来表示该帧图像在视频流中的位置.而在多路流(比如视频.音频)时,往往需要进行多媒体的同步,使得画面 ...

  8. JavaWeb项目中引入spring框架

    主要步骤有以下3步: 1:下载spring的jar包2:在项目中web.xml中添加spring配置3:bean配置文件-applicationContext.xml 1:引入包,这个就不说了,官网下 ...

  9. JS——冒泡排序

    核心思想: 1.外层for循环控制比较的轮数 2.内层for循环控制每轮比较的次数 3.外层每进行一轮比较,内层就少一次比较,因为外层每进行一轮比较都会产生一个最大值 <script> v ...

  10. microsoft ajax registered - to fix microsoft ajax update panel post back

    <dnn:DnnScriptBlock runat="server">     <script type="text/javascript"& ...