Skip to content

Commit

Permalink
更新措辞
Browse files Browse the repository at this point in the history
  • Loading branch information
Mq-b committed Dec 29, 2024
1 parent 30ee4a0 commit 9b32dd4
Showing 1 changed file with 2 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ int main() {

`close()` 调用实际上是冗余的,因为当 file 对象析构时,会自动调用 close()。

在 C++ 标准库中,写入文件时,数据首先被写入到库内部的用户态缓冲区中。这样做的目的是提高性能,避免每次写入都直接与底层文件系统进行交互。这样做的目的是为了**减少系统调用次数和提高效率**,尤其是在频繁进行小规模写入时。通过使用缓冲区,多个写入操作可以**合并成一次批量写入**,减少 I/O 操作的开销。
在 C++ 标准库中,写入文件时,数据首先被写入到库内部的用户态缓冲区中。这样做的目的是为了**减少系统调用次数以提高效率**,尤其是在频繁进行小规模写入时。通过使用缓冲区,多个写入操作可以**合并成一次批量写入**,减少 I/O 操作的开销。

几乎所有的库都会使用缓冲区来优化文件操作,这是一种非常常见的做法。在上述代码中,你可以在 `file.close()` 之前设置断点,或者 sleep,你会发现,只有在刷新了用户态缓冲区之后,数据才被写入了文件。

Expand All @@ -62,7 +62,7 @@ read(file_path);
这种情况是完全可能的。那么,为什么在这种情况下我们仍然能够**成功读取**文件呢?
- **虽然此时数据可能还没有完全写入硬件设备(磁盘),操作系统文件系统会提供抽象,使得你在读取文件时,能从内核缓冲区中看到数据。**
- **虽然此时数据可能还没有完全写入硬件设备(磁盘),但是操作系统文件系统会提供抽象,使得你在读取文件时,能从内核缓冲区中看到数据。**
也就是让用户感觉好像真的写入了一样,“*如同写入*”,有点类似于一个映射。
Expand Down

0 comments on commit 9b32dd4

Please sign in to comment.