Ruby线程:如何从不同的地方连接线程,以便它们是并发的?

时间:2014-11-11 19:16:04

标签: ruby multithreading

a = Thread.new { 5.times { |i| p i; sleep 0.1 } }
a.join
p 'a'

b = Thread.new { 5.times { |k| p k; sleep 0.1 } }
b.join
p 'b'

这将打印出 01234a01234b 。我希望它打印出来的是: 001122334a4b
p 'b'p 'a'必须都在线程之外。它们必须在相应的线程完成后执行。 a b 线程必须同时执行。

怎么做?

1 个答案:

答案 0 :(得分:3)

好吧,如果你在加入时改变,你就会非常接近。

a = Thread.new { 5.times { |i| p i; sleep 0.1 } }
b = Thread.new { 5.times { |k| p k; sleep 0.1 } }
a.join
b.join
p 'a'
p 'b'

但这种行为无法保证。如果没有某种线程同步,您将获得调度程序希望获得的任何内容。您总是想要完全订购吗?