Я пишу программу ruby, которая будет использовать потоки для выполнения некоторой работы.На выполняемую работу уходит недетерминированное количество времени, и она может варьироваться от 5 до 45+ секунд.Ниже приведен грубый пример того, как выглядит код потока:
loop do # Program loop
items = get_items
threads = []
for item in items
threads << Thread.new(item) do |i|
# do work on i
end
threads.each { |t| t.join } # What happens if this isn't there?
end
end
Я бы предпочел пропустить присоединение к потокам, а не блокировать все приложение.Однако я не знаю, каковы долгосрочные последствия этого, особенно потому, что код запускается снова почти сразу.Это то, что безопасно делать?Или есть лучший способ создать поток, заставить его работать и очистить, когда он закончится, все в бесконечном цикле?