我正在阅读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>
感谢您的回答!
答案 0 :(得分:8)
更改书籍或小心阅读。你当然是对的,唯一的保证是a
会在w
之后显示。
我刚刚测试了你的代码,这是10次运行后的结果:
weal
weal
ewal
wela
wael
wael
wela
ewla
ewla
weal