Hi, I have Ruby embedded into a multithreaded C++ app. It's easy for a C++ thread to wait for an event from a Ruby thread.(*) But I'm looking for ways to allow a Ruby thread to sleep until an event from a C++ thread is posted. My application is cross-platform so my solution needs to work on Windows and OS X. So far all I can think of, without hacking ruby itself, is to open a TCP or UDP socket, and have the Ruby thread select() on the socket. Then the C++ side can fire a packet at the socket to wake the ruby thread up. Can anyone think of a simpler way? I haven't measured the overhead yet, but offhand it seems overkill to send a packet through the IP stack to do the work of a condition variable. (But yes I do need to actually measure it.) (*) Sleeping in C++ for an event from a Ruby thread: The C++ thread sleeps on a boost::condition variable. The Ruby thread invokes a C extension method which notify()'s the condition variable. Simple enough in this direction. Any thoughts appreciated, Thanks, Bill