Убив всех нити работников, когда один нить нашел ответ (Ruby)
-
25-09-2019 - |
Вопрос
Вот образец программы:
def worker(from, to)
puts "#{from}..#{to}"
for i in from..to do
if i == 42
puts "kill the rest of the threads"
break;
end
puts i
sleep 1
end
end
if __FILE__ == $0
threads = []
for i in 0..9 do
threads << Thread.new { worker(i*10, i*10+10) }
end
threads.each { |thread| thread.join }
end
Я хотел бы, чтобы все темы останавливались, когда один из теток нашел ответ (в этом случае 42). Я не уверен, что называется эта концепция, поэтому я не могу искать его.
Я ценю помощь :)
Решение
Вам нужна совмещенная переменная потока, которая указывает, нашел ли нить ответ и обращается к потокам через Mutex.
Не связан с StackOverflow