Ruby - 为什么Thread不尊重方法放?

时间:2012-09-09 01:52:51

标签: ruby-on-rails ruby multithreading

以下代码抛出消息时不会使用换行符。

threads = []
counter = 1000
counter.times do
     threads << Thread.new do 
        puts "This is a line."
        sleep 1
     end
end

threads.each {|t| t.join}

结果是

This is a line. This is a line

This is a line.
This is a line.

and so on...

无论如何都要以更整洁的方式打印结果行吗?

1 个答案:

答案 0 :(得分:2)

puts通过打印其参数在内部工作,然后打印换行符。有时,线程在两个操作之间中断,导致您看到的行为。你可以说:

 print "This is a line.\n"

...它会在一次操作中写出整个字符串 - 包括换行符。