本文主要是介绍libevent入门---定时器程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1、入门1.1、概述
Libevent是一个用于开发可扩展性网络服务器的基于事件驱动(event-driven)模型的网络库。Libevent有几个显著的亮点:
(1)事件驱动(event-driven),高性能;
(2)轻量级,专注于网络,不如 ACE 那么臃肿庞大;
(3)源代码相当精炼、易读;
(4)跨平台,支持 Windows、Linux、*BSD和 Mac Os;
(5)支持多种 I/O多路复用技术, epoll、poll、dev/poll、select 和kqueue 等;
(6)支持 I/O,定时器和信号等事件;
(7)注册事件优先级;
Libevent 已经被广泛的应用,作为底层的网络库;比如 memcached、 Vomi t、 Nylon、 Netchat等等。
代码int lasttime;static void
timeout_cb(int fd, short event, void *arg)
{
struct timeval tv;
struct event *timeout = arg;
int newtime = time(NULL);//printf("%s: called at %d: %d\n", __func__, newtime,
printf("%s: called at %d: %d\n", "timeout_cb", newtime,newtime - lasttime);
lasttime = newtime;evutil_timerclear(&tv);
tv.tv_sec = 2;
//重新注册event
event_add(timeout, &tv);
}int
main (int argc, char **argv)
{
struct event timeout;
struct timeval tv;/* Initalize the event library */
//初始化event环境
event_init();/* Initalize one event */
//设置事件
evtimer_set(&timeout, timeout_cb, &timeout);evutil_timerclear(&tv);
tv.tv_sec = 2;
//注册事件
event_add(&timeout, &tv);lasttime = time(NULL);//等待,分发,处理事件
event_dispatch();return (0);
}
这篇关于libevent入门---定时器程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!