对c语言中的i/o流,完全缓冲和不缓冲具体差别在哪里,能举个例子说明一下吗?
答案:1 悬赏:40 手机版
解决时间 2021-03-11 22:29
- 提问者网友:萌卜娃娃
- 2021-03-10 22:43
对c语言中的i/o流,完全缓冲和不缓冲具体差别在哪里,能举个例子说明一下吗?
最佳答案
- 五星知识达人网友:琴狂剑也妄
- 2021-03-10 22:57
实际上就是I/O效率的问题,
不缓冲的话,数据直接送给 I/O 设备,由于I/O设备的速度相对CPU 内存来说慢很多,
所以经常使用I/O就会影响效率
所以在运算结果和I/O 间建立一个缓冲(一般为内存空间) 把运算结果 先放到这个缓冲里
当缓冲满的时候才启动I/O 传送数据,当然缺陷是 如果缓冲未满,这时程序终止运行
那么这些在缓冲里的数据就会丢失
你可以做个写文件的例题,
open
write 一些数据(不要超过缓冲长度)
最后不要调用 close 或者 flush
这个时候你会发现实际文件里没有写入任何数据
如果你write的数据超过缓冲,你会发现就会有一部分数据被写入文件了
所以缓冲是一种用空间换时间 提高运行效率的解决方案
比如
硬盘 - 内存- CPU
内存 - cache- CPU
GPU - 显存
这些都属于使用缓冲的概念
不缓冲的话,数据直接送给 I/O 设备,由于I/O设备的速度相对CPU 内存来说慢很多,
所以经常使用I/O就会影响效率
所以在运算结果和I/O 间建立一个缓冲(一般为内存空间) 把运算结果 先放到这个缓冲里
当缓冲满的时候才启动I/O 传送数据,当然缺陷是 如果缓冲未满,这时程序终止运行
那么这些在缓冲里的数据就会丢失
你可以做个写文件的例题,
open
write 一些数据(不要超过缓冲长度)
最后不要调用 close 或者 flush
这个时候你会发现实际文件里没有写入任何数据
如果你write的数据超过缓冲,你会发现就会有一部分数据被写入文件了
所以缓冲是一种用空间换时间 提高运行效率的解决方案
比如
硬盘 - 内存- CPU
内存 - cache- CPU
GPU - 显存
这些都属于使用缓冲的概念
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯