C++ 跨进程同步

问题描述 投票:0回答:1

我有一个用 C++ 编写的 exe,其代码有一个 if/else 循环。 if 循环检查目录中的文件,如果目录为空,则会在该目录中生成文件。 Else 循环(如果目录中有文件),它读取这些文件并填充数据结构。

现在该 exe 的多个实例正在运行。一个实例必须将文件生成到目录中,所有其他实例都应该读取它们。如何同步实例?我的意思是,当一个实例生成文件时,所有其他实例都应该等待,并且生成的 exe 应该在生成所有文件后发出某种信号,以便其他实例开始读取它们。我们是否有标准 C++ 中的任何构造来跨进程同步?

c++ process synchronization
1个回答
0
投票

我不知道有任何标准方法可以做到这一点。我曾经遇到过同样的问题,我使用系统级调用来创建一个特殊的锁定文件(Linux 中的

open
,Windows 中的
CreateFile
),如果文件不存在,则使用适当的参数来创建该文件,但使用现有文件(如果存在),然后使用适当的系统调用来锁定这个新文件。之后,您可以检查您感兴趣的文件是否存在,如果不存在则创建它们。

© www.soinside.com 2019 - 2024. All rights reserved.