3

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

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

4

1 回答 1

3

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
于 2012-07-06T07:55:08.917 回答