libevent2のタイマー
libeventのバージョン2系では,バージョン1系の時と幾ばくか御作法が異なっていた.バージョン2系でのタイマーは以下のようにするらしい.バージョン1系のときは,event_baseは指定する必要はなかったけれど,バージョン2系では指定する必要があり,さらに,event_setがなくなったっぽい.
3秒後にhello world!を表示するプログラム.
#include <stdio.h> #include <event.h> void hello(evutil_socket_t fd, short events, void *arg) { printf("hello world!\n"); } int main(int argc, char *argv[]) { struct event_base *ev_base; struct event *ev; struct timeval tval; ev_base = event_base_new(); ev = evtimer_new(ev_base, hello, NULL); tval.tv_sec = 3; tval.tv_usec = 0; evtimer_add(ev, &tval); event_base_dispatch(ev_base); event_free(ev); event_base_free(ev_base); return 0; }
この例ではevtimer_newを使っているけれど,自前でevent構造体をアロケートした場合はevtimer_assignを使うようだ.libeventは使いやすいけれどexampleが少なすぎる.