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

时间:2010-11-18 23:54:53

标签: c multithreading buffer stdout

我正在尝试学习多线程,我有一个简单的问题。在我发现的大多数示例中,标准输出缓冲区在允许多个线程使用它之前关闭:

函数setbuf(标准输出,NULL);

为什么呢?如果我删除那行代码,代码打印相同!

2 个答案:

答案 0 :(得分:4)

它们可能不会打印出来 - 当输出被缓冲时,它可能不会立即显示,这可能会改变线程在线程之间输出的顺序。

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

答案 1 :(得分:2)

它可以防止缓冲,这意味着您可以更好地了解各种线程何时执行了哪些操作。也就是说,当stdout发生时,您更有可能看到对stdout的写入,而不是在将{{1}}写入一些数据之后。

当您将控制台应用程序的输出传递给UI时,这也很有帮助。