Ruby 为什么线程中的睡眠没有puts输出?

Ruby 为什么线程中的睡眠没有puts输出?,ruby,Ruby,我正在使用Ruby 2.0、Cygwin和Windows 8。以下程序不产生任何输出;它将永远循环,而不会将时间置于位置 hi = Thread.new do while true do puts Time.now # or call tick function sleep 1 end end hi.join 我错过什么了吗 我希望功能是: 做点什么 等待3-10秒 再做一次等等 似乎您的输出已被缓冲(默认为false)。要立即刷新所有输出,请使用以下命令启动脚本:

我正在使用Ruby 2.0、Cygwin和Windows 8。以下程序不产生任何输出;它将永远循环,而不会将时间置于
位置

hi = Thread.new do
  while true do
    puts Time.now # or call tick function
    sleep 1
  end
end
hi.join
我错过什么了吗

我希望功能是:

  • 做点什么
  • 等待3-10秒
  • 再做一次等等

似乎您的输出已被缓冲(默认为
false
)。要立即刷新所有输出,请使用以下命令启动脚本:

$stdout.sync = true

我知道我没有发疯,这在我的Ubuntu devbox上运行得非常好!试试
$stdout.sync=true
@Stefan奇妙的Stefan!谢谢你知道为什么吗?如果您回答下面的问题,我将给您正确的答案:)您还可以使用“p”而不是“put”从线程内部返回输出。