У меня есть алгоритм, который может запускаться в течение неограниченного периода времени, обновляя результаты по мере их появления. Он использует что-то похожее на Iterative Deepening Search. По истечении заданного промежутка времени я бы хотел, чтобы алгоритм остановился, поэтому я могу использовать результат, который он вычислял.Как использовать алгоритм в Ruby?
Вот пример того, как я это с помощью выполнения темы:
best_result = 0
thread = Thread.new {
while true
new_result = rand
best_result = new_result if new_result > best_result
end
}
sleep 5
thread.exit
puts best_result
Есть ли лучший способ временного ящика алгоритм в Ruby?
Update
Производительность является ключевым фактором.
Исключение немного нечетное, так как оно не является случаем исключения (всегда будет тайм-аут). Тем не менее, я думаю, что это хороший вариант. –
* Это эффективно делает то же самое * => Нет, это не так. – sawa
@sawa: Хорошо, почти то же самое: роли двух потоков переключаются, а вещь, выполняемая в другом потоке, спящая. Это функционально эквивалентно, хотя, если я что-то не хватает. – Amadan