我有3个进程(同等优先级)
- P1
- P2
- P3(定时器)
获取互斥锁的优先级如下:P1(1 priority), P2(2 priority), P3(timer)(3 priority)
如果假设p3
来获取互斥锁
然后p2
来等待互斥体
之后 p1 来了,它也等待互斥体
if p3
然后释放互斥体p1
应该得到互斥体不p2
.
如何在 C 或 C++ 中执行此操作。
注意:所有进程都在具有相同优先级的线程内运行。
操作系统-windows XP
由于线程具有相同的优先级,因此哪个线程获得锁将是相当任意的。看来您想要等待条件变量而不是使用简单的互斥体。你仍然会有一个互斥锁;条件变量是互斥锁之上的一个概念。另一种可能性是使用同步屏障。
编辑:
使用 pthreads 接口(C 风格)使用条件变量的示例:https://computing.llnl.gov/tutorials/pthreads/#ConVarSignal https://computing.llnl.gov/tutorials/pthreads/#ConVarSignal
您需要问自己一个重要的问题:经过所有这些等待和同步,您买东西了吗?使用线程的目的是让一些事情并行运行。如果没有发生这种情况,则多线程应用程序的运行速度比应用程序根本不使用线程时要慢。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)