优先获取互斥锁提升进程
Acquire mutex with preference for elevated process
我有一个互斥体,以避免多个进程同时运行,一旦互斥体被释放,这些进程可能会等待启动。现在,我可以有一些实例尝试获取互斥器提升和非提升。我希望提升的进程能够在持有锁的进程释放互斥锁后,在非提升进程之前获取互斥体。
不太可能,但我想考虑许多实例是非提升的,许多实例是提升的,它们竞争相同的互斥锁以提供一些健壮的东西。
实现这一目标的良好稳健方法是什么?
该问题的解决方案可以使用多个互斥锁。我想我可以研究这种方法来区分升高和非升高并玩一些技巧。
编辑:我主要在寻找Windows Vista +的答案,但我认为如果我们将问题减少到优先获取互斥锁的处理类别,则问题适用于其他操作系统。了解其他操作系统的解决方案也会很有趣。
只需编写完全符合您期望的代码即可。例如,您可以有一组提升的进程在等待互斥锁,这些进程受互斥锁保护。然后,对非提升的进程进行编码,使其在该计数降至零之前不继续。无论如何,所有进程都在合作 - 作弊者可以拒绝阻止互斥锁。所以应该没有安全问题。
相关文章:
- 每次使用带有LOCK_EX标志的LOCK_NB时,相同的程序/进程都会获取锁
- 如何获取进程以设置其亲和力?
- 如何获取进程的整数PID?
- 获取特定进程的句柄数
- 如何使用 c++ libboost 运行进程并获取其输出?
- 从 c++ 中的实例化进程获取输出的可靠方法是什么?
- 如何以编程方式获取任务管理器进程CPU使用率(不是PerfMon API)
- 如何从进程获取实时、非阻塞输出
- 从创建进程创建的进程获取输出
- 在Win 7中从远程进程获取PEB
- 从其他进程获取 CoGetClassObject
- 从x64进程获取另一个进程的32位PEB
- 从x64进程获取函数表
- 从非子进程获取退出代码
- 从Linux中的非子进程获取退出代码
- 从另一个进程获取 win32 线程的起始地址
- 从其他进程获取模块句柄
- 从32位进程获取64位进程内存的入口点
- 如何从子进程获取状态信息以度量资源利用率
- C++在没有OpenProcess()的情况下从进程获取句柄