【发布时间】:2011-05-30 09:35:41
【问题描述】:
我有 3 个进程(同等优先级)
- P1
- P2
- P3(定时器)
获取互斥体的优先级如下:P1(1 priority), P2(2 priority), P3(timer)(3 priority)
如果假设p3 来获取互斥锁
然后p2 来等待互斥锁
之后 p1 来了,它也等待互斥锁
如果p3 释放互斥锁,那么p1 应该得到互斥锁而不是p2。
如何在 C 或 C++ 中执行此操作。
注意:所有进程都在具有相同优先级的线程中运行。
操作系统 - Windows Xp
【问题讨论】:
-
这里有一些语法错误,使问题变得模棱两可。你能解决这个问题吗?
-
据说(可惜我现在不记得在哪里),即使p1调用WaitForSingleObject(),只有在p2调用WaitForSingleObject()之后,p2仍有可能获得获取p1 之前的互斥锁。所以它更多地取决于操作系统的状态而不是线程的优先级。
-
问题似乎是关于多处理,而不是多线程。如果这是真的(即您确实要同步三个进程,而不是单个进程中的线程),那么请修复标签。
标签: c++ c windows mutex multiprocessing