我不确定最好的方式来了解我正在尝试做的事情,所以我想我会转向这里寻求想法。
我有 N 个程序,它们都必须通过内存映射文件与一个进程 ProcA 通信。
当我打开 N 组中的任何程序时,它会检查 ProcA 是否已打开,如果没有则启动它。这就是这个问题的来源......
当 ProcA 准备就绪时,我需要能够与生成它的进程通信,映射内存已创建并且可以开始通信。
我正在考虑使用互斥锁来实现这一点。让生成处理尝试在循环中获取和释放互斥锁,检查它是否是创建者,直到它返回该互斥锁是在其他地方创建的。即使这看起来可能有问题,因为正如我所说,N 个程序将同时执行此操作,如果多个程序像这样旋转、获取和释放,它们会看到彼此锁定并认为它是 ProcA。
那么,在 ProcA 发出对业务开放的信号之前,阻止 N 个进程的最佳方法是什么?
谢谢!
编辑
为了进一步澄清,我尝试让产生 ProcA 的过程创建 ProcA 然后可以接管的内存映射。但是我发现我有同样的问题,因为生成过程需要知道何时释放共享内存,如果它在 ProcA 抓取它之前释放它,那么内存映射就会被释放。
编辑 2
我需要在两个进程之间传递指针数据,因此内存映射文件是我唯一的选择,管道、套接字等对此不起作用。