В Ruby я хочу, чтобы два потока работали одновременно, и хочу, чтобы фоновый поток периодически сигнализировал потоку переднего плана.Как заставить поток переднего плана блокироваться, пока фоновый поток не скажет 'go'?Я могу придумать несколько способов сделать это, но мне нужен наиболее подходящий идиоматический метод Ruby.
В коде:
loop do # background, thread 1
sleep 3
receive_input
tell_foreground_input_is_ready # <-- how do I do this?
end
и
loop do # foreground, thread 2
wait_for_signal_from_background # <-- how do I do this?
do_something
end
(примечание: фон может сигнализировать несколько раз на переднем плане. каждый раз, когда передний план завершает ожидание, он сбрасывает отставание.)