My original design was misguided. Of course calling event_base_dispatch() means giving the running thread to libevent's event_base. I am still learning how it works... On Thu, Nov 27, 2014 at 10:32 AM, Azat Khuzhin <[email protected]> wrote:
> > On 27 Nov 2014 04:29, "Fongang Dassi Jean" <[email protected]> wrote: > > > > Hello, > > > > at http://www.wangafu.net/~nickm/libevent-book/Ref3_eventloop.html, > there is a note that > > > > "Ordinarily, the loop will exit as soon as it has no pending or active > events. You can override this behavior by passing the > EVLOOP_NO_EXIT_ON_EMPTY flag---for example, if you’re going to be adding > events from some other thread." > > > > This seems to imply that it is only recommended to add events if another > thread is used? > > No, you could add events from callbacks too. > Thanks for pointing this out, it helped me understand how it all works. In the program bellow, the callbacks on the event attached to the pipe(g-> fifo_event) are used to insert additional requests into to event_base. > > > > This program: > https://raw.githubusercontent.com/bagder/curl/master/docs/examples/hiperfifo.c > manages > to register additional events after dispatch is called, but seems to rely > on the existence of a persisting event. > > It has one timer. > I meant the fifo_event on the pipe seems to prevent the event_base from completing and exiting. > > > > Is that the only way? What is the best way? > > > > Thanks in advance >
