On Thu, Jun 25, 2009, Denis Bilenko wrote:
> Hi,
> 
> I've run into an issue that surprised me a bit. I'm installing a few
> timeouts to be
> executed on a following loop iteration, i.e. after zero seconds. I
> would expect the timeouts
> happen in the order they were installed, however, this is not the
> case. Here's the code

I didn't think this was documented. As such, why would you expect them
to fire in-order? :)

> that shows the issue:
> 
> #include <stdio.h>
> #include "event.h"
> 
> struct event e[3];
> struct timeval zero = {0, 0};
> 
> void print(int fd, short events, char * text)
> {
>         printf(text);
> }
> 
> void callback(int fd, short events, void * arg)
> {
>         timeout_set(&e[0], print, "A\n");
>         timeout_add(&e[0], &zero);
>         timeout_set(&e[1], print, "B\n");
>         timeout_add(&e[1], &zero);
>         timeout_set(&e[2], print, "C\n");
>         timeout_add(&e[2], &zero);
> }
> 
> int main()
> {
>         struct event e;
>         event_init();
>         timeout_set(&e, callback, NULL);
>         timeout_add(&e, &zero);
>         event_dispatch();
> }
> 
> The output of this program is
> libevent$ ./a.out
> A
> C
> B
> 
> not ABC as I would like.
> 
> If I do the same outside of the callback, the order is maintained as expected.
> 
> Adding more timers suggests that all of them except the first one (A)
> are executed in the reverse order.
> Again, doing the same outside of a callback makes them run in the
> expected order.
> 
> Is this a bug or it's supposed to work this way? Maybe I'm doing
> something wrong and there is a way
> of getting the expected behavior without resorting to increasing
> timeval for each new call?
> 
> Thanks,
> Denis.
> _______________________________________________
> Libevent-users mailing list
> Libevent-users@monkey.org
> http://monkeymail.org/mailman/listinfo/libevent-users

-- 
- Xenion - http://www.xenion.com.au/ - VPS Hosting - Commercial Squid Support -
- $25/pm entry-level VPSes w/ capped bandwidth charges available in WA -
_______________________________________________
Libevent-users mailing list
Libevent-users@monkey.org
http://monkeymail.org/mailman/listinfo/libevent-users

Reply via email to