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