我有 3 个进程(同等优先级)
- P1
- P2
- P3(计时器)
获取互斥锁的优先级如下:P1(1优先级), P2(2优先级), P3(timer)(3优先级)
如果假设 p3
来并获得互斥体
然后 p2
来等待互斥量
在那之后 p1 来了,它也等待互斥锁
如果 p3
释放互斥量,那么 p1
应该得到互斥量而不是 p2
。
如何在 C 或 C++ 中执行此操作。
注意:所有进程都在具有相同优先级的线程中运行。
操作系统 - Windows Xp
最佳答案
由于线程具有相同的优先级,因此哪个线程获得锁将是相当随意的。看起来您想等待条件变量而不是使用简单的互斥体。你仍然会有一个互斥锁;条件变量是互斥体之上的概念。另一种可能性是使用同步屏障。
编辑: 使用 pthreads 接口(interface)(C 风格)使用条件变量的示例: https://computing.llnl.gov/tutorials/pthreads/#ConVarSignal
您需要问自己一个重要问题:在所有这些等待和同步的情况下,您是否购买了任何东西?使用线程的目的是让一些事情并行运行。如果没有发生这种情况,那么您的多线程应用程序的运行速度会比应用程序根本不使用线程的情况慢。
关于c++ - 如何在C/C++中设置获取互斥量的优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6174543/