From: Joshua Haberman Date: 2006-01-30T06:27:45+09:00 Subject: waking up a Ruby thread asynchronously? 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