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:)

Était-ce utile?

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
scroll top