什么是IO流缓冲?

时间:2012-11-16 07:35:25

标签: c++ iostream buffering

我无法找到IO Stream Buffering的基本概念及其含义。 任何教程和链接都会有所帮助。

3 个答案:

答案 0 :(得分:1)

缓冲使用内存(用户内存)而不是直接将数据发送到OS(即磁盘)。保存上下文切换。

答案 1 :(得分:1)

缓冲是处理输入和输出的软件的基本部分。缓冲区保存软件接口和硬件接口之间的数据,因为硬件和软件以不同的速度运行。

生成数据的组件可以将其放入缓冲区,稍后通过将收集的数据发送到下一个组件来“刷新”缓冲区。同样,另一个组件可能是“等待缓冲区”,直到完整的数据或足够有效处理的数据可用于输入。

在C ++中,std::basic_filebuf在文件系统文件上实现缓冲区。它存储最多固定的字节数,因此操作系统始终以最小的事务大小工作,而程序可以根据需要访问单个字符。

请参阅Wikipedia

答案 2 :(得分:1)

这是概念。想象一下,你有一个应用程序需要将它的数据写入硬盘驱动器。假设它想要每隔半秒写一些东西(例如更新日志文件)。这个好吗?不,这就是原因。

软件可以非常快,但硬盘可以运行的速度有限,而且它比内存和应用程序慢得多。要写东西,HDD需要将磁头重新定位到特定扇区(这可能涉及减慢光盘旋转速度),写入数据,然后重新定位到原来的位置。因此,您的应用程序可以非常缓慢地运行(当然,这是一个理论示例)。

缓冲有助于解决这个问题。不是每次都写入光盘,而是将数据累积在存储器中的某个缓冲区中。收集到足够数量的数据后,将刷新缓冲区:来自它的数据将写入磁盘。这种方法有助于最小化HDD操作并提高整体速度。