文档章节

libevent源码分析1

What_Dream
 What_Dream
发布于 2016/10/05 19:11
字数 316
阅读 28
收藏 0

我想成为大牛的必备要素是对各类开源软件有一定程度的了解

Linux是开源软件的圣地,我选择的开源软件首先是libevent,一个用C语言编写的、轻量级的开源高性能网络库。事件驱动( event-driven),高性能;轻量级,专注于网络,都是它的优点。具体可以参考:http://baike.baidu.com/link?url=q1ZDgAv8Z54OkI6IsdoO00vi338B_xIuif-2_VMKopp1zIIldgGDy1Uh4G6Ge8eRuh2CmQNvwAi7Dr8hRyLJKQ53mWlEQnyS2y0JxBmTV6m

先来了解一下libevent的安装过程:(在linux下)

在官网下载http://libevent.org,我下载了最新版本libevent-2.0.22-stable.tar.gz

tar -zxvf ibevent-2.0.22-stable.tar.gz

cd libevent-2.0.22-stable

./configure -prefix=/usr/libevent

sudo make

sudo make install

这样libevent库就安装到你的机器上了,编写一些简单的例子来验证一下

#include <stdio.h>  
#include <event.h>  
  
void onTime(int sock, short event, void *arg)  
{  
    printf("Game over!\n");  
  
    struct timeval tv;  
    tv.tv_sec = 1;  
    tv.tv_usec = 0;  
  
    // 事件执行后,默认就被删除,需要重新add,使之重复执行  
    event_add((struct event*)arg, &tv);  
}  
  
int main()  
{  
    // 初始化事件  
    event_init();  
  
    // 设置定时器回调函数  
    struct event evTime;  
    evtimer_set(&evTime, onTime, &evTime);  
  
    struct timeval tv;  // 1s后执行  
    tv.tv_sec = 1;  
    tv.tv_usec = 0;  
      
    // 添加事件  
    event_add(&evTime,&tv);
    // 循环派发事件  
    event_dispatch();  
  
    return 0;  
}  

保存为timer.c文件

gcc -o timer timer.c -levent

© 著作权归作者所有

共有 人打赏支持
What_Dream
粉丝 0
博文 1
码字总数 316
作品 0
武汉
libevent源码深度剖析

作者:http://blog.csdn.net/sparkliang/article/category/660506 libevent源码深度剖析十三——libevent信号处理注意点 2010-02-11 20:00阅读(1669)评论(6) libevent源码深度剖析PDF 2010-...

晨曦之光
2012/03/09
2.4K
0
libevent源码深度剖析

原文地址:http://blog.csdn.net/sparkliang/article/details/4957667 libevent源码深度剖析一 ——序幕 张亮 1 前言 Libevent是一个轻量级的开源高性能网络库,使用者众多,研究者更甚,相关...

晨曦之光
2012/03/09
145
0
libevent学习资料

<<libevent学习资料>> The libevent API provides a mechanism to execute a callback function when a specific event occurs on a file descriptor or after a timeout has been reached. ......

年少爱追梦
2016/11/17
12
0
Memcached源码分析之线程模型

一)模型分析 memcached到底是如何处理我们的网络连接的? memcached通过epoll(使用libevent,下面具体再讲)实现异步的服务器,但仍然使用多线程,主要有两种线程,分别是“主线程”和“w...

_Calix
2014/11/23
1K
1
在Linux下编译安装memcached

一.在编译安装之前,先安装系统所需要的相关库文件 #yum -y install gcc gcc-c++ make cmake libtool autoconf libaio 二.下载相应的依赖库和memcached源码包 1.从http://libevent.org/下载l...

gdp1088
2017/08/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

java并发备忘

不安全的“先检查后执行”,代码形式如下: if(条件满足){ //这里容易出现线程安全问题//doSomething}else{//doOther} 读取-修改-写入 原子操作:使用CAS技术,即首先从V中读取...

Funcy1122
今天
0
0
SpringBoot2.0 停机

最近新建了个SpringBoot2.0的项目,因为原来一直使用的是传统的Tomcat部署war包的形式,所以这次SpringBoot内置Tomcat部署jar包的时候遇到了很多问题。其中一个就是因为没有外置的Tomcat容器...

Canaan_
昨天
0
1
Confluence 6 外部参考

一个外部参考的意思是任何站点链接到你 Confluence 的实例。任何时候当 Confluence 的用户单击这个外部链接的时候,Confluence 可以记录这次单击为参考。 在默认的情况下,外部链接的参考链接...

honeymose
昨天
0
0
Android中的设计模式之抽象工厂模式

参考 《设计模式解析》 第十一章 Abstract Factory模式 《设计模式:可复用面向对象软件的基础 》3.1 Abstract Factory 抽象工厂 对象创建型模式 《Android源码设计模式解析与实战》第6章 创...

newtrek
昨天
0
0
Redis | 地理空间(GEO)的一个坑

Redis的地理空间(Geo)是个好东西,轻轻松松的就可以把地图描点的问题处理了, 最近却遇到一个坑...Redis采用的Msater-Slave模式, 运用GEORADIUS在salve读取对应的数据,新增了从节点但是从不返...

云迹
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部