1

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

4

3 回答 3

1

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

于 2012-11-16T07:38:24.073 回答
1

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

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

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

参见维基百科

于 2012-11-16T07:40:53.590 回答
1

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

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

缓冲有助于解决这个问题。不是每次都写入磁盘,而是将数据累积在内存中某处的缓冲区中。一旦收集到足够多的数据,缓冲区就会被刷新:其中的数据被写入磁盘。这种方法有助于最大限度地减少 HDD 操作并提高整体速度。

于 2012-11-16T07:46:20.393 回答