C++ 获取优先用于提升进程的互斥体

C++ 获取优先用于提升进程的互斥体,c++,windows,winapi,synchronization,multiprocessing,C++,Windows,Winapi,Synchronization,Multiprocessing,我有一个互斥体,以避免多个进程同时运行,这些进程可能在释放互斥体后等待启动。现在我可以有一些实例尝试获取提升和非提升互斥。我希望提升进程能够在持有锁的进程释放互斥锁后,在非提升进程之前获取互斥锁 是不可能的,但我想考虑很多情况下没有提升,很多情况下,为了同一个互斥体而竞争,有一些强健的东西。 实现这一目标的好方法是什么 该问题的解决方案可以使用多个互斥锁。我在想,我可以用这种方法来区分高层和非高层,并玩一些把戏 编辑: 我主要是在寻找Windows Vista+的答案,但如果我们将问题简化为优先

我有一个互斥体,以避免多个进程同时运行,这些进程可能在释放互斥体后等待启动。现在我可以有一些实例尝试获取提升和非提升互斥。我希望提升进程能够在持有锁的进程释放互斥锁后,在非提升进程之前获取互斥锁

是不可能的,但我想考虑很多情况下没有提升,很多情况下,为了同一个互斥体而竞争,有一些强健的东西。 实现这一目标的好方法是什么

该问题的解决方案可以使用多个互斥锁。我在想,我可以用这种方法来区分高层和非高层,并玩一些把戏

编辑:
我主要是在寻找Windows Vista+的答案,但如果我们将问题简化为优先获取互斥的处理类别,我认为这个问题也适用于其他操作系统。了解其他操作系统的解决方案也很有意思。

只需编写符合您要求的代码即可。例如,您可以有许多提升的进程等待互斥锁,并受到互斥锁的保护。然后对非提升进程进行编码,直到该计数降至零为止。无论如何,所有进程都在协作——作弊者可能会拒绝阻止互斥锁。因此应该没有安全问题。

您知道进程名称吗?启动场景如何?在linux中,我们有专门用于此目的的systemd、control Group,但不确定windows。我不知道名称,但我可以找到这些信息。Linux能够用提升启动进程吗?我还以为那是窗户上唯一的东西呢。好的,在这种情况下,场景在Windows下。想知道这个问题的*nix解决方案也是很有意思的!回答得很好@David Schwartz。谢谢看来解决办法就在你身边。一开始,我不太明白你的意思,不得不稍微组织一下你的想法,但是根据你的答案生成的控制流程图看起来非常稳健。我将使用共享内存作为计数器,并使用互斥锁进行独占访问。如果一个非提升的进程增加了计数器,那么可能存在欺骗,但这不是一个大问题。再次感谢。不久前实施。工作得很好。