0
libevent
님의 타이머 기능을 테스트하고 있습니다. timeout_cb
에서타이머에서베이스를 가져 옵니까?
shared_ptr<event_base> base(event_base_new(), std::ptr_fun(event_base_free));
vector<shared_ptr<event> > std_events;
...
static const timeval three_sec = { 3, 0 };
event* tev = NULL;
tev = evtimer_new(base.get(), NULL, NULL);
rc = event_assign(tev, base.get(), -1, EV_PERSIST, timeout_cb, tev);
rc = event_add(tev, &three_sec);
shared_ptr<event> ptr(tev, std::ptr_fun(event_free));
std_events.push_back(ptr);
rc = event_base_dispatch(base.get());
, 나는 그것이 디스패치 루프 후 몇 번 실행 종료하려면 :
void
timeout_cb(evutil_socket_t fd, short events, void *arg)
{
static int count = 0;
int rc = 0;
event* timer = (event *)arg;
event_base* base = NULL;
if(count++ == 5) {
struct timeval delay = { 1, 0 };
rc = event_base_loopexit(base, &delay);
}
}
을
나는 타이머를 3 초마다 발사 다음에 타이머를 설정
콜백에서 arg
에 대한 사용자 정의 구조체를 피하려고합니다.
event_base_loopexit
은 base_event
이 필요합니다. base_event
을 evutil_socket_t
또는 event*
timer
에서 가져올 수 있습니까?