STDOUT.sync = true 是什么意思?

What STDOUT.sync = true means?

我正在阅读 god Ruby 中的一个进程监控框架的源代码并找到了这个 STDOUT.sync = true。我以前从未见过这样的事情。

请解释一下它的作用,这一行的意义何在?

提前致谢。

通常 puts 不会立即写入 STDOUT,而是在内部缓冲字符串并以更大的块写入输出。这样做是因为 IO 操作很慢,通常避免将每个字符立即写入控制台更有意义。

这种行为在某些情况下会导致问题。假设您想构建一个进度条(运行 一个在大量计算之间输出单个点的循环)。使用缓冲的结果可能是一段时间没有任何输出,然后突然一次打印多个点。

要避免这种行为并立即写入 STDOUT,您可以将 STDOUT 设置为同步模式,如下所示:

STDOUT.sync = true

来自docs

When sync mode is true, all output is immediately flushed to the underlying operating system and is not buffered internally.