我正在学习红宝石及其概念。我在“ruby中的线程”中读取article,其中无法区分thread.pass和thread.exit。本文包含以下两种方法的定义: Thread.pass 方法调用线程调度程序将执行传递给另一个线程。 Thread.exit 方法终止当前运行的线程并安排另一个要运行的线程。
但是在使用这些方法时我很困惑。你可以帮我解决一下吗?谢谢
答案 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