Ruby STDOUT.sync=true意味着什么?
我正在阅读Ruby中的Ruby STDOUT.sync=true意味着什么?,ruby,io,Ruby,Io,我正在阅读Ruby中的god进程监控框架的源代码,发现这个STDOUT.sync=true。我以前从未见过这样的事情 请解释一下它的作用,这条线的意义是什么 提前感谢。通常情况下,put不会立即写入STDOUT,而是在内部缓冲字符串并以较大的块写入输出。这样做是因为IO操作很慢,通常避免将每个字符立即写入控制台更有意义 这种行为在某些情况下会导致问题。假设您想要构建一个进度条(运行一个循环,在大量计算之间输出单个点)。缓冲的结果可能是暂时没有任何输出,然后突然一次打印出多个点 要避免这种行为,而
god
进程监控框架的源代码,发现这个STDOUT.sync=true
。我以前从未见过这样的事情
请解释一下它的作用,这条线的意义是什么
提前感谢。通常情况下,
put
不会立即写入STDOUT
,而是在内部缓冲字符串并以较大的块写入输出。这样做是因为IO操作很慢,通常避免将每个字符立即写入控制台更有意义
这种行为在某些情况下会导致问题。假设您想要构建一个进度条(运行一个循环,在大量计算之间输出单个点)。缓冲的结果可能是暂时没有任何输出,然后突然一次打印出多个点
要避免这种行为,而是立即写入STDOUT
,可以将STDOUT
设置为如下同步模式:
STDOUT.sync = true
从:
当sync mode为true时,所有输出将立即刷新到底层操作系统,并且不会在内部进行缓冲
你用圆点做的例子让我想起了进度条。