1
97
在继续之前,只要想确保输出已写入,就需要无缓冲输出。一个例子是C运行时库下的标准错误——这通常在默认情况下是不缓冲的。由于错误(希望)很少发生,所以您希望立即了解它们。另一方面,标准输出 是 缓冲只是因为它假设会有更多的数据通过它。 另一个例子是日志库。如果日志消息保存在进程的缓冲区中,并且进程转储核心,那么很可能永远不会写入输出。 此外,它不仅最小化了系统调用,而且还最小化了磁盘I/O。假设一个程序一次读取一个字节的文件。对于未缓冲的输入,您将针对每个字节输出(相对非常慢)磁盘,即使它可能必须读取整个块(磁盘硬件本身可能有缓冲区,但您仍将输出到磁盘控制器,这将比内存访问慢)。 通过缓冲,整个块立即被读入缓冲区,然后单个字节从缓冲区(内存中,速度极快)传递给您。 请记住,缓冲可以采取多种形式,例如在以下示例中:
|
2
25
当您已经准备好写入磁盘的大量字节序列时,您需要无缓冲的输出,并且希望 避免额外复制 进入中间的第二个缓冲区。
缓冲的输出流将把写入结果累积到中间缓冲区中,只有在积累了足够的数据(或
无缓冲输出具有
没有什么
确保数据到达磁盘;该功能由
|
Mr. Kisus · 如何删除数字对中的第二个数字 2 年前 |
Prince · 复制大型文件需要更多时间 2 年前 |
altern · 输出haskell对象,忽略“show”声明 6 年前 |
supermeerkat · 嵌套并行。For()循环和文件创建问题 6 年前 |
Arka Pal · 关闭管道中未使用的端部 6 年前 |
Marta · 重命名提取文件的文件夹 6 年前 |
Sean2148 · 如何在Java 8中使用CSV值作为构造函数参数 6 年前 |
youR.Fate · 在c中向fstream写入二进制数据++ 6 年前 |
Jon Lauridsen · 等待放在哪里? 6 年前 |