У меня есть две темы в рубиновом процессе. То, что я хочу сделать, - это один сон и другие отправьте сигнал, чтобы проснуться.Ruby Wait and Signal
Я знаю, как это сделать с помощью Mutex и ConditionalVariables, но у меня нет секции критика для запуска, поэтому это неправильное решение.
Я знаю, как это сделать с остановкой потока и потоком, где на потоке останавливается сам, а другие вызовы работают на нем, но теперь это то, что я действительно ищу.
Есть ли другой способ? То, что я пытаюсь выполнить, - это заставить поток ждать содержимого в базе данных, а другой - сообщать, когда есть контент.
http://stackoverflow.com/questions/534919/ruby-thread-programming-ruby-equivalent-of-java-wait-notify-notifyall дает краткое изложение и пример того, как делать то, что вы хотите сделать , – mcfinnigan
@Heineken Что случилось с подходом Mutex/CondVar? Даже если у вас есть логический предикат (данные/нет данных), доступ к предикату должен выполняться под защитой мьютекса. –
Да, я пошел с подходом Mutex/CondVar. Я мог бы получить что-то вроде очереди и сигнала, как у меня в java, но не смог найти. – Gabriel