Ruby线程的输出顺序?

时间:2014-05-29 14:40:11

标签: ruby multithreading

我正在阅读Ruby Threads(之前我从未使用过Ruby),我对以下代码感到惊讶:

t1 = Thread.new { print "w"; Thread.pass; print "a"}
t2 = Thread.new { print "e"; Thread.pass; print "l"}
t1.join
t2.join

这本书说总是会显示“weal”,我不明白为什么,因为如果它们是真正的线程(如在其他语言中),则不能确保“w”将在“e”之前打印。 / p>

感谢您的回答!

1 个答案:

答案 0 :(得分:8)

更改书籍或小心阅读。你当然是对的,唯一的保证是a会在w之后显示。

我刚刚测试了你的代码,这是10次运行后的结果:

weal
weal
ewal
wela
wael
wael
wela
ewla
ewla
weal