文件创建是否完全有序?

Kaz*_*ley 5 filesystems synchronization concurrency vfs

在 Linux 上,openat系统调用可用于创建文件并测试它们的存在。就 C/C++ 内存模型而言,创建文件并验证其存在会创建同步关系。我需要知道的是这些同步是否都彼此顺序一致。(我当然希望如此,但我实际上并没有在任何地方看到这种记录。)

例如,给定进程 p1 和 p2,以及路径 A 和 B:

如果 p1 这样做:create(A),然后 create(B)

p2 这样做:尝试打开(B),然后尝试打开(A)

并且没有其他进程干扰A或B,是否有可能p2成功打开B但找不到A?

如果它有所不同,我们可以假设所有操作都在一个文件系统中。