libev out of context thread

Varun Chandramohan cvaruneng04 at
Wed Dec 11 03:11:02 CET 2013

Hi All,

I have a basic question using libev. Before asking the question let me put
in context of what iam trying to do.

Thread 1 -> Puts my_struct ptr in an array (protected by lock)
Thread 2 -> on lock released reads the entry from array. As expected
thread2 {
 while (1)
    check lock
    read from array
     release lock

The need to use libev comes at this point. After I read something from
array I would want to add the new sd to the loop. However I get the socket
descriptor only after I read from the array. So I will have to run
ev_loop() prior to adding any descriptors. In order to solve this problem I
plan to just create another thread before the while(1) loop.
in thread all I would do is

void* WPEVThread(void *ctx)


#pragma unused(ctx)

    ev_loop(loop, 0);

    return NULL;


Once I have a sd to add to loop can I call

    ev_io_init(&d_packet->io, connect_ps_cb, d_packet->connect_sd, EV_WRITE|

    ev_timer_init(&d_packet->timeout_watcher, connect_timeout_handler,

    ev_timer_start(loop, &d_packet->timeout_watcher);

    ev_io_start(loop, &d_packet->io);

Is there a problem with this approach?


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the libev mailing list