使用libevent库

编译

从官网下载最新的release包 libevent-2.0.22-stable.tar.gz

解压并进入相应目录后进行编译:

./configure && make  
sudo make install

编译完成后,可以按Command+Shilt+G进入目录(/usr/local/lib)查看生成的文件夹 libevent-2.0.22

定时器示例

新建一个Command Line Tool 的c++项目,首先在Build Phases->Link Binary With Libraries里添加三个.a库文件 libevent_core.a、libevent_extra.a、libevent_phreads.a(这几个库文件的选择视情况而定)。

检查Building Setting里的Library Search Paths是否已添加了libevent库文件目录,如果没有则添加(以下是我本机路径):

/usr/local/libevent-2.0.22/lib //库文件目录

在Header Search Paths里将头文件的目录添加进去(以下是我本机路径):

/usr/local/libevent-2.0.22/include //头文件的目录

在main.cpp添加简单定时器代码:

#include <stdio.h>
#include <iostream>

// libevent头文件
#include <event.h>
using namespace std;

struct event evt;
struct timeval tv;

// 定时事件回调函数
void time_cb(int sock, short event, void *arg)
{
    printf("timer wakeup\n");
    //重新添加定时事件(定时事件触发后默认自动删除)
    event_add((struct event*)arg, &tv);
}

int main()
{
    //初始化
    struct event_base *base = event_init();

    tv.tv_sec = 1; //1s period
    tv.tv_usec = 0;

    //设置定时事件
    evtimer_set(&evt,time_cb, &evt);

    // 添加定时事件
    event_add(&evt, &tv);

    //事件循环
    event_base_dispatch(base);

    return 0;
}

参见

Comments