3

无缓冲 I/O 和标准 I/O 有什么区别?我知道使用 read()、write()、close() 是无缓冲的 IO。Printf 和 gets 是缓冲的 IO。我也知道最好将缓冲 IO 用于大事务。我只是不知道为什么。在这种情况下,“缓冲”一词是什么意思?

4

1 回答 1

7

无缓冲 I/O 仅意味着在读取或写入时不使用任何缓冲区。通常,当我们使用 read() 和 write() 之类的系统调用时,它们逐个字符地读取和写入字符,并可能导致性能大幅下降。因此,对于大数据,通常首选高级读/写或简单的缓冲 I/O。缓冲只是意味着我们处理的不是单个字符而是一个字符块,这就是为什么有时它也称为块 I/O。通常在 Unix 中,当我们使用高级读/写函数时,它们会获取/存储给定块大小的数据,并将它们放在缓冲区缓存中,然后这些 I/O 函数从该缓冲区缓存中获取所需的数据量。

于 2011-12-07T12:57:56.297 回答