libevent簡單應用:設定定時器
阿新 • • 發佈:2019-02-02
#include <event.h>
#include <iostream>
using namespace std;
struct event ev; //事件
struct timeval tv; //定時器
/*事件處理函式,cb=callback*/
void time_cb(int fd,short _event,void *argc)
{
cout<<"timer wakeup"<<endl;
event_add(&ev,&tv);/*重新新增定時器*/
}
int main()
{
WSADATA WSAData; /*初始化WINDOWS socket庫*/
WSAStartup(0x101, &WSAData);
struct event_base *base = event_init();//初始化libevent庫,相當於初始化一個Reactior,就可以註冊事件了.
tv.tv_sec=10; //間隔
tv.tv_usec=0;
evtimer_set(&ev,time_cb,NULL);//初始化關注的事件,並設定回撥函式
//等價於event_set(&ev, -1, 0, timer_cb, NULL);
event_add(&ev,&tv);//註冊事件 相當於呼叫Reactor::register_handler()函式註冊事件
event_base_dispatch(base);//進入訊息迴圈和訊息分發
}
#include <iostream>
using namespace std;
struct event ev; //事件
struct timeval tv; //定時器
/*事件處理函式,cb=callback*/
void time_cb(int fd,short _event,void *argc)
{
cout<<"timer wakeup"<<endl;
event_add(&ev,&tv);/*重新新增定時器*/
}
int main()
{
WSADATA WSAData; /*初始化WINDOWS socket庫*/
WSAStartup(0x101, &WSAData);
struct event_base *base = event_init();//初始化libevent庫,相當於初始化一個Reactior,就可以註冊事件了.
tv.tv_sec=10; //間隔
tv.tv_usec=0;
evtimer_set(&ev,time_cb,NULL);//初始化關注的事件,並設定回撥函式
//等價於event_set(&ev, -1, 0, timer_cb, NULL);
event_add(&ev,&tv);//註冊事件 相當於呼叫Reactor::register_handler()函式註冊事件
event_base_dispatch(base);//進入訊息迴圈和訊息分發
}