ruby中thread.exit和thread.pass有什么区别?

时间:2012-07-06 06:47:24

标签: ruby

我正在学习红宝石及其概念。我在“ruby中的线程”中读取article,其中无法区分thread.pass和thread.exit。本文包含以下两种方法的定义: Thread.pass 方法调用线程调度程序将执行传递给另一个线程。 Thread.exit 方法终止当前运行的线程并安排另一个要运行的线程。

但是在使用这些方法时我很困惑。你可以帮我解决一下吗?谢谢

1 个答案:

答案 0 :(得分:1)

Thread.pass让位给要执行的其他线程,但最终,调度程序会将执行传递给它。 Thread.exit终止线程(因此告诉调度程序将执行传递给另一个线程)。我希望这有帮助。如果没有,请包括引起混淆的代码。

t1 = Thread.new do
  10.times do |i|
    if i < 5
      puts i
      sleep 0.1
      Thread.pass
    else
      Thread.exit
    end
  end
end

sleep 0.05

t2 = Thread.new do
  10.times do |i|
    puts i
    sleep 0.1
  end
end

t1.join
t2.join

这将有以下输出:

0
0
1
1
2
2
3
3
4
4
5
6
7
8
9