Joshua Pritikin wrote:
> Danny Faught wrote:

> >Also, I've tripped over some big signal concurrency issues looking at
> >writing an event loop using a blocking select call....
> 
> No, Event tries its best to wait inside poll/select.
> AFAIK, this is the proper way to inform the
> kernel that the process is idle.

Thanks for your help.  I had missed a whole directory of source code. 
So you're depending on the poll/select to wake up when a signal arrives?

It looks like your signal handler just sets a flag when it's invoked,
which is the same way I do it.  This means that you depend on the event
loop to wake up and check the flag.  But what happens if a signal comes
in right before the poll/select call?  The signal won't wake it up.  

I don't see any of the common hacks to avoid this, such as doing a
longjump out of the signal handler.  I see the pe_signal_asynccheck
function that talks about avoiding race conditions, but I don't
understand XS well enough to track how it's called.
--
Danny Faught
Tejas Software Consulting
http://www.tejasconsulting.com

Reply via email to