PATCH: Integrating libev with other runloops

Marc Lehmann schmorp at schmorp.de
Sun Oct 24 23:55:28 CEST 2010


On Sun, Oct 24, 2010 at 04:31:59PM +0200, Rasmus Andersson <rasmus at notion.se> wrote:
> 
> IMHO driving one runloop with another is a "clean" solution and the way to go.

Except it can't be done, so whether it is "clean" or not is academic.

> > In any case, you know there are no active watchers anymore when ev_run
> > returns.
> 
> Ah, so if ev_run returns 0 that means I can mark the libev runloop as
> "unrolled"? And this will include ev_ref/ev_unref's?

No, ev_run doesn't have a return code, but it will return either for
ev_break or when the refcount is zero, both of which is easy to check.

> > This is broken by design - ev_run polls for new events, and if you call
> > ev_run only from time to time you will delay event notification by this
> > amount.
> 
> The implementation in my patch, and thus used in our code, is simply
> copy-pasted from the ev_run code, where AFAIK approximation of next
> invocation is calculated. How would this be solved using the current
> libev (4.0) API in your opinion?

See my previous mail - the only way to do it is using a thread (or a
separate process etc.).

-- 
                The choice of a       Deliantra, the free code+content MORPG
      -----==-     _GNU_              http://www.deliantra.net
      ----==-- _       generation
      ---==---(_)__  __ ____  __      Marc Lehmann
      --==---/ / _ \/ // /\ \/ /      schmorp at schmorp.de
      -=====/_/_//_/\_,_/ /_/\_\



More information about the libev mailing list