我正在进入 ruby 并且已经使用线程有一段时间了,但并没有完全理解它们。我注意到,在向数组添加线程时,如果我将 sleep() 命令添加为第一个命令,则线程不会运行,直到我执行我想要的连接。所以我有2个问题。
1.这是假设发生的吗?
2.有没有比我现在做的更好的方法。这是一个示例代码,我必须展示我在说什么。
job = Array.new
10.times do |n|
job << Thread.new do
sleep 0.001
puts "done #{n}"
end
end
#job.each do |t|
#t.join
#end
puts "End of script"
输出是
End of script
如果我删除评论输出是
done 1
done 0
done 7
done 6
done 5
done 4
done 3
done 2
done 9
done 8
End of script
所以我现在使用它,但我不明白为什么会这样。有时我注意到甚至做一些像`echo hi`而不是sleep的事情。
提前致谢。