Mut*_*pan 3 c windows winapi mutex process
操作系统:Windows语言:C/C++
设计要求跨进程及其子进程使用互斥变量.如果我在一个进程中创建互斥锁,我必须在另一个进程中打开互斥锁以检查临界区的可用性.要打开互斥锁,我需要知道在父进程中创建的互斥锁的名称.假设,如果我将互斥锁作为我的应用程序名称.我可以知道互斥锁的名称,因为它是固定的.但是,如果我并行加载我的应用程序的第二个实例,则会出现混淆.
以下是更好的主意吗?我有一个想法,将父进程中的互斥锁命名为进程ID.所以现在我需要从子进程/子进程中获取Parent的进程ID以打开互斥锁.我想没有直接的方法从grand子进程中获取父进程id.所以我必须在每个创建进程api(在lpenvironment parm中)传递进程id.
任何人都可以建议一个简单的方法,因为互斥量最常用....我是一个新手.
主要想法很好,但你可以做一些实现调整.
首先,如果您的应用程序涉及多个进程协作,那么生成子进程的主"控制器"进程可以通过命令行参数轻松传递其PID.如果子进程也生成自己的子进程,它们可以通过相同的机制传输PID.
进一步考虑这个想法,您也可以完全跳过PID并通过命令行参数将互斥名称本身传递给子进程.这种方法的优点是父进程和子进程不需要包含从PID派生互斥锁名称的代码.通过传递互斥锁名称本身,您可以将子进程与必须知道它的生成方式分离.许多主流应用程序(例如Google Chrome)都使用此方法.
最后,您可以通过向互斥锁名称添加随机字符串(可能是GUID)来做得更好.我不相信任何人会使用相同的名称命名他们自己的全局同步对象,但一些额外的预防措施不会受到伤害.