什么STDOUT.sync = true意味着什么?

我正在阅读Ruby中的一个进程监视框架的源代码,发现这个STDOUT.sync = true 。 我以前从未见过这样的东西。 请解释它的作用,这条线的重点是什么?

提前致谢。

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

这种行为在某些情况下会导致问题。 想象一下,你想要建立一个进度条(运行一个循环,在广泛的计算之间输出单点)。 通过缓冲,结果可能是一段时间没有任何输出,然后突然多次打印出多个点。

为避免此行为而是立即写入STDOUT您可以将STDOUT设置为同步模式,如下所示:

 STDOUT.sync = true 

来自文档 :

当sync模式为true时,所有输出立即刷新到底层操作系统,并且不在内部缓冲。