为什么这个Ruby线程代码输出2?
生成0、2,然后生成错误。我不明白为什么每次只输出0然后退出时它都输出2?这是一个调度问题。这些线程并不真正并行运行。相反,Ruby解释器在执行线程之间不断切换 在这种情况下,线程1引发一个必须处理的异常。这可能需要足够的时间来允许线程2执行 尝试在为什么这个Ruby线程代码输出2?,ruby,Ruby,生成0、2,然后生成错误。我不明白为什么每次只输出0然后退出时它都输出2?这是一个调度问题。这些线程并不真正并行运行。相反,Ruby解释器在执行线程之间不断切换 在这种情况下,线程1引发一个必须处理的异常。这可能需要足够的时间来允许线程2执行 尝试在raise和print行之间输入sleep 0.1,这将导致根本没有输出 Thread.abort_on_exception = true threads = 4.times.map do |number| Thread.new(number)
raise
和print
行之间输入sleep 0.1
,这将导致根本没有输出
Thread.abort_on_exception = true
threads = 4.times.map do |number|
Thread.new(number) do |i|
raise "Boom!" if i == 1
print "#{i}\n"
end
end
puts "Waiting"
threads.each {|t| t.join }
puts "Done"