使用libevent超时事件我有什么错误?

时间:2013-04-17 17:43:28

标签: libevent

我正在尝试学习libevent以用于未来的项目。我试图创建一个事件,每次超时都调用它的回调函数。所有回调函数都打印出“timeout_cb called”到标准输出。

我的回调函数代码是:

static void timeout_cb(evutil_socket_t fd, short what, void *arg) { 
printf("timeout_cb called");
}

我的活动代码是:

struct event *toEvent; // time out event do this every so often

toEvent = event_new(base, -1, EV_TIMEOUT, timeout_cb, NULL); // base is the event base
event_add(toEvent, &five_seconds); //five_seconds is a timeval struct with 5 seconds 

程序将编译并运行,没有错误或警告,但它不打印回调函数中的短语。我在其他回调类型中使用了类似的printf语句来验证它们是否已被调用,并且函数内部已经到达了各种行,但这没有做任何事情。我等了30秒左右,但仍然没有打印到屏幕上。使用纯超时事件我做错了什么。

1 个答案:

答案 0 :(得分:2)

你必须做

event_new(base, -1, 0, timeout_cb, NULL);

请注意,有一些方便的宏来添加定时器,evtimer_new(),evtimer_add(),请参阅docs