我想学习多线程,我有一个简单的问题。在我发现的大多数例子中,在允许多线程使用它之前关闭标准输出缓冲区:为什么在多线程时关闭标准输出缓冲区?
setbuf(stdout,NULL);
为什么?如果我将它们删除,代码也会打印出来!
我想学习多线程,我有一个简单的问题。在我发现的大多数例子中,在允许多线程使用它之前关闭标准输出缓冲区:为什么在多线程时关闭标准输出缓冲区?
setbuf(stdout,NULL);
为什么?如果我将它们删除,代码也会打印出来!
它们可能不会打印出相同的结果 - 当输出被缓冲时,它可能不会立即显示,这可能会改变线在线程之间输出的顺序。
关闭缓冲可确保您知道执行语句的顺序。
它可以防止缓冲,这意味着您可以更好地理解各种线程什么时候做什么。也就是说,在stdout
发生时,你更有可能看到写入,而不是在将一些数据写入stdout
之后。
当您将控制台应用程序的输出传送到UI时,执行此操作也很有帮助。