1つのスレッドが答えを見つけたとき、すべてのスレッドの労働者を殺す(ルビー)

StackOverflow https://stackoverflow.com/questions/2199282

質問

ここではサンプルプログラムです

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、この場合には)答えを見つけたときに停止するために、すべてのスレッドをしたいと思います。私は、この概念は、私はそれを検索することができないんだ理由である、と呼ばれているかわからないんだけど。

私は助けに感謝:)

役に立ちましたか?

解決

あなたは、スレッドが答えを発見したと、ミューテックスを経由してスレッドによってアクセスされるかどうかを示す共有スレッド変数を必要とします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top