我正在阅读加速 C++,作者写道:
当您编写可能需要很长时间运行的程序时,在适当的时候刷新输出缓冲区是一个重要的习惯。否则,程序的某些输出可能会在您的程序编写它和您看到它之间的很长一段时间内在系统缓冲区中停滞不前
如果我误解了这些概念中的任何一个,请纠正我:
- 缓冲区:一块随机存取存储器,用于临时保存输入或输出。
- 冲洗:释放已分配给某些 ..umm 的随机存取内存。
我找到了这个解释:
刷新输出设备意味着需要立即完成所有前面的输出操作。这与缓冲问题有关,缓冲是操作系统使用的一种优化技术。粗略地说,操作系统保留(并且通常行使)将数据“待机”的权利,直到它决定它有足够大的数据量来证明将数据发送到屏幕的相关成本是合理的。然而,在某些情况下,我们需要保证程序中执行的输出操作在程序执行的给定点完成,因此我们刷新输出设备。
继续那个解释,我读到导致系统刷新缓冲区的三个事件:
- 缓冲区已满,将自动刷新
- 可能会要求库从标准输入流中读取 *是标准输入流,例如
std::cin >> name ;
- 第三种情况是我们明确告诉它。我们如何明确地告诉它?
尽管我不觉得完全掌握以下内容:
- 什么是输出缓冲区与只是一个缓冲区和可能的其他类型的缓冲区......
- 刷新缓冲区意味着什么。它只是意味着清除内存吗?
- 上面解释中提到的“输出设备”是什么
- 最后,在这一切之后,什么时候是冲洗缓冲区的好时机……嗯,这听起来并不愉快。