输入输出流为什么要用缓冲区?

类别:VC语言 点击:0 评论:0 推荐:

    这个问题我实在重读C++基本IO类的时候才认真考虑的(哎,当初上学时吃下去的东西,现在才开始销化)。我相信有很多人对这个问题一个非常清楚了,但是我也相信有很多人和我一样没有考虑过这个问题。现在我想把我的理解发表出来,欢迎大家批评。

    我想以一个例子说明,比如我想把一篇文章以字符序列的方式输出到计算机显示器屏幕上,那么我的程序内存作为数据源而显示器驱动程序作为数据目标,如果数据源直接对数据目标发送数据的话。数据目标获得第一个字符,便将它显示。然后从端口读取下一个字符,可是这时就不能保证数据源向端口发送的恰好是第二个字符(也许是第三个,而第二个已经在数据目标显示时发送过了)。这样的话就不能保证输出的数据能完整的被数据目标所接受并处理。

      为了解决这个问题,我们需要在数据源与数据目标中间放置一个保存完整数据内容的区域,那就是dangdangdangdang----“缓冲区”。这样的话, 数据源可以不考虑数据目标正在处理哪部分数据,只要把数据输出到缓冲区就可以了,数据目标也可以不考虑数据源的发送频率,只是从缓冲区中依次取出下一个数据。从而保证了数据发送的完整性,同时也提高了程序的效率。

      我说明白了吗?:)

本文地址:http://com.8s8s.com/it/it2411.htm