EV
    
    
  
  
  
view release on metacpan or search on metacpan
libev/ev.pod view on Meta::CPAN
     sigaddset (&block, SIGUSR1);
     sigprocmask (SIG_BLOCK, &block, &prev);
     while (queue_get (&data))
       process (data);
     if (sigismember (&prev, SIGUSR1)
       sigprocmask (SIG_UNBLOCK, &block, 0);
   }
(Note: pthreads in theory requires you to use C<pthread_setmask>
instead of C<sigprocmask> when you use threads, but libev doesn't do it
either...).
=item queueing from a thread context
The strategy for threads is different, as you cannot (easily) block
threads but you can easily preempt them, so to queue safely you need to
employ a traditional mutex lock, such as in this pthread example:
   static ev_async mysig;
    
  
  
  
( run in 0.253 second using v1.01-cache-2.11-cpan-a1d94b6210f )