In Ruby, I want to have two threads running at the same time, and want the background thread to periodically signal the foreground thread. How do I get the foreground thread to block until the background thread says 'go'? I can think of a few ways to do it, but am after the most appropriate, idiomatic Ruby method.
In code:
loop do # background, thread 1
sleep 3
receive_input
tell_foreground_input_is_ready # <-- how do I do this?
end
and
loop do # foreground, thread 2
wait_for_signal_from_background # <-- how do I do this?
do_something
end
(note: background may signal multiple times to the foreground. each time foreground finishes waiting, it resets backlog.)