为什么在多线程时要关闭标准输出缓冲?

4

我正在学习多线程,有一个简单的问题。在我找到的大多数示例中,在让多个线程使用标准输出缓冲区之前,都会关闭它:

setbuf(stdout,NULL);

为什么?如果我从这些代码中删除那行代码,输出结果不会有任何变化!

2个回答

4

当输出被缓冲时,可能不会立即显示,这可能会改变线程之间输出行的顺序,因此它们可能不会打印相同的内容。

关闭缓冲可以确保您知道语句执行的顺序。


2

它可以防止缓冲,这意味着您更能感知各个线程的执行情况。例如,您更有可能在写入stdout时立即看到输出,而不是在一定数量的数据被写入stdout之后才看到。

当您将控制台应用程序的输出导向UI时,这也非常有帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接