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

datque 发布于 2018-10-17 buffer 最后更新 2018-10-17 22:08 21 浏览

我试图学习多线程,我有一个简单的问题。在我发现的大多数例子中,标准输出缓冲区在让多个线程使用它之前关闭: 函数setbuf(标准输出,NULL); 为什么?如果我将它们删除,代码也会打印出来!

已邀请:

wet

赞同来自:

它可以防止缓冲,这意味着您可以更好地了解各种线程何时执行了哪些操作。即,在发生stdout时,您更有可能看到写入,而不是在将一些数据写入stdout之后。 当您将控制台应用程序的输出传递给UI时,这也很有帮助。

psunt

赞同来自:

它们可能不会打印出来 - 当输出被缓冲时,它可能不会立即显示,这可能会改变线程之间输出线的顺序。 关闭缓冲可确保您知道语句的执行顺序。