I am writing a C extension for Ruby that wraps a networking API.  I  
want to be able to write a Ruby function that blocks the calling Ruby  
thread until I get an asynchronous notification from the networking  
API that a message has arrived.  To do that, I would need a few extra  
hooks into the thread scheduler in eval.c. The main one would be:

/* can be called asynchronously (in a different thread from the
  * Ruby interpreter) */
rb_thread_async_wakeup(VALUE thread)
{
	rb_thread_check(thread)->status = THREAD_RUNNABLE;
}

This should cause the thread scheduler to consider this thread for  
running, the next time the scheduler runs.

What do you think?  Could such a hook be integrated into the main  
Ruby distribution?

Thanks,
Josh