У меня проблема с таймером libevent. Я использую bufferevent в течение достаточно долгого времени, и я знаком с libevent.
У меня есть отдельный поток, который отправляет событие, и он запускается при запуске программы
static void *ev_thread(void *base) {
while(1) {
event_base_dispatch(struct event_base *)base);
}
return NULL;
}
Эта установка отлично работает с bufferevent.
Однако теперь я попытался использовать таймер следующим образом
struct timeval tv;
tv.tv_sec = 1;
tv.tv_usec = 0;
struct event *ev = event_new(base, -1, 0, on_timer_callback, NULL);
int rv = event_add(ev, &tv);
printf("rv = %d\n", rv);
Проблема в том, что таймер никогда не срабатывает. Однако, если я вызываю event_base_dispatch () после event_add, таймер срабатывает, хотя и побеждает цель.
Есть идеи, как добавить событие в уже запущенное событие l oop?