Tuer tous les travailleurs de fil quand un fil a trouvé la réponse (rubis)
-
25-09-2019 - |
Question
Voici un exemple de programme:
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
Je voudrais tous les fils d'arrêter lorsque l'un des fils a trouvé la réponse (dans ce cas, 42). Je ne sais pas ce que ce concept est appelé, ce qui est la raison pour laquelle je suis incapable de le rechercher.
Je vous remercie de l'aide:)
La solution
Vous avez besoin d'une variable de fil partagé qui indique si un fil a trouvé la réponse et est accessible par les fils via un Mutex.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow