c++ - 两个进程打开同一个文件进行写入

标签 c++ windows parallel-processing

当两个进程同时打开一个不存在的文件进行写入时会发生什么?即考虑在两个并发进程中运行的 C++ 代码

ofstream ofs("/my/test/path/some_file")

操作系统会序列化实际创建的文件吗?

PS:我在 Windows 上编写代码,所以我主要想知道 Windows 会做什么,但我很想知道这里的行为是否依赖于操作系统。

最佳答案

两个进程打开同一个文件进行写入并没有什么特别令人兴奋的。

当这些进程尝试写入同一个文件时,有趣的部分就开始了。操作系统不会充当裁判。每个单独的进程都将由操作系统安排,以便在操作系统需要时执行。无论进程在其时间片内做什么,操作系统通常都会置身事外。一个进程可能会向文件写入一些内容,然后另一个进程可能会写入一些内容,也可能不会。取决于代码的作用。

因此,除非采取明确的步骤,以某种方式让多个进程协调它们对文件的访问,否则无法预测多个进程写入文件的最终结果。计算机不会着火或内爆,世界不会走到尽头。但是,每次重复这个实验,结果都会不同。

关于c++ - 两个进程打开同一个文件进行写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25924667/

相关文章:

android - 如何使用 Android SDK 管理器安装 NDK

c - MPI 笛卡尔拓扑 - MPI_Gather 等效吗?

python - 是否有 scipy.optimize.minimize 的并行版本?

c++ - C++ 中的 goto 和 RAII

c - 截图程序编译问题

c++ - 在 C++ 中使用 miniz 将一个 vector 解压缩为另一个 vector

javascript - 错误 : spawn npm ENOENT

performance - 如何并行化小型纯函数?

c++ - Scons 没有指定 CPPPATH,仍然可以检测到 .h 依赖吗?

c++ - 将字符串相关函数从 C++ 转换为 C