Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby STDOUT.sync=true意味着什么?_Ruby_Io - Fatal编程技术网

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

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

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

请解释一下它的作用,这条线的意义是什么


提前感谢。

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

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

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

STDOUT.sync = true
从:

当sync mode为true时,所有输出将立即刷新到底层操作系统,并且不会在内部进行缓冲


你用圆点做的例子让我想起了进度条。