首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是IO流缓冲?

什么是IO流缓冲?
EN

Stack Overflow用户
提问于 2012-11-16 15:35:25
回答 3查看 130关注 0票数 1

我找不到IO Stream Buffering的基本概念以及它的含义。任何教程和链接都会很有帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-16 15:40:54

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

生成数据的组件可以将其放入缓冲区,然后通过将收集的数据发送到下一个组件来“刷新”缓冲区。类似地,另一个组件可以在缓冲器上等待,直到完整的数据片段或足够的数据可用于输入。

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

参见Wikipedia

票数 1
EN

Stack Overflow用户

发布于 2012-11-16 15:38:24

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

票数 1
EN

Stack Overflow用户

发布于 2012-11-16 15:46:20

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

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13412289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档