libevent 合集


    libevent很好的翻译与解析 :http://blog.csdn.net/xyblog/article/details/50392094

    Libevent使用例子,从简单到复杂 http://blog.csdn.net/flyingleo1981/article/details/51823258

1. timer程序:

在使用libevent函数之前,首先需要调用其event_init函数进行初始化。
初始化过程主要是创建一个全局默认的current_base变量,其类型为
struct event_base。

struct event_base对象变量可由eventn_base_new()函数创建并初始化。
libevent中,部分函数默认直接操作全局current_base,部分相同功能函数
可特别指定由event_base_new()创建的其他struct event_base变量,如:
event_set()默认操作的全局current_base变量,
event_base_set()则操作指定的event_base变量。

event_init与event_base_new函数

该函数将调用event_base_new()函数,创建并初始化一个struct event_base对象,
并将该对象赋值给全局变量current_base,作为全局默认的event_base。

event_dispatch 可以参考下面:http://blog.csdn.net/yusiguyuan/article/details/18262151


[cpp] view plain copy print?在CODE上查看代码片派生到我的代码片
#include<stdio.h>  
#include<event.h>  
#include <event2/bufferevent.h>  
#include <event2/buffer.h>  
#include <event2/listener.h>  
#include <event2/util.h>  
#include <event2/event.h>  
int lasttime;  
//这里是静态函数  
static void timeout_cb(int fd,short event,void *arg)  
{//注意这里传递的参数对于定时事件来说fd=-1,event=0  
    struct timeval tv;  
    struct event *timeout=arg;  
    int newtime=time(NULL);  
    printf("%s:called at %d:%d\n","timeout_cb",newtime,newtime-lasttime);  
    lasttime=newtime;  
        //下面三行重新注册tv时间  
    evutil_timerclear(&tv);  
    tv.tv_sec=2;  
    event_add(timeout,&tv);  
}  
int main(int argc,char *argv[])  
{  
    struct event timeout;  
    struct timeval tv;  
    event_init();  
    evtimer_set(&timeout,timeout_cb,&timeout);//设置定时器,这里evtimer_set是event_new的简写  
    evutil_timerclear(&tv);  
    tv.tv_sec=2;  
    event_add(&timeout,&tv);  
    lasttime=time(NULL);  
    event_dispatch();//事件主循环  
    return 0;  
}  



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于学习libevent,你可以按照以下步骤进行: 1. 了解libeventlibevent是一个开源的事件通知库,它提供了事件驱动的网络编程接口,可以用于开发高性能的网络服务器和客户端应用。它支持多种I/O模型(包括基于事件的和多线程的),并提供了跨平台的兼容性。 2. 安装libevent:你可以从libevent的官方网站(https://libevent.org/)上下载最新版本的libevent,并按照官方文档中的指南进行安装。根据你使用的操作系统不同,安装步骤可能会有所不同。 3. 学习libevent的基本概念:了解libevent中的一些核心概念,如事件循环(event loop)、事件处理器(event handler)、事件回调函数(event callback)等。理解这些概念对于正确使用libevent非常重要。 4. 掌握libevent的使用方法:学习如何使用libevent来编写网络应用程序。这包括创建事件循环、注册事件、定义事件回调函数等。libevent提供了丰富的API,你可以根据自己的需求选择适的接口进行开发。 5. 深入研究libevent的高级特性:学习libevent的更高级功能,如定时器、信号处理、缓冲区管理等。这些功能可以帮助你更好地控制和优化你的网络应用。 6. 查阅文档和示例代码:libevent的官方网站提供了详细的文档和示例代码,你可以利用这些资源来加深对libevent的理解。此外,还可以参考一些开源项目中使用libevent的实际案例,以便更好地应用于自己的项目中。 记住,学习任何新的库或工具都需要有耐心和实践。不断尝试和练习,结实际项目,才能更好地掌握和应用libevent。祝你学习顺利!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值