当一个线程找到答案时,杀死所有线程工作者(ruby)

时间:2010-02-04 11:37:31

标签: ruby multithreading jobs kill worker

以下是一个示例程序:

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)。我不确定这个概念叫什么,这就是为什么我无法搜索它。

我很感激帮助:)

1 个答案:

答案 0 :(得分:1)

您需要一个共享线程变量,指示线程是否找到了答案并由线程通过Mutex访问。