Sur*_*uri 6 c c++ windows mutex multiprocessing
我有3个进程(相同的优先级)
获取互斥锁的优先级如下: P1(1 priority), P2(2 priority), P3(timer)(3 priority)
如果假设p3来了并获得互斥量然后p2在p1到来之后等待互斥量并且它还等待互斥量
如果p3释放互斥,那么p1应该得到互斥锁p2.
如何在C或C++中执行此操作.
注意:所有进程都在具有相同优先级的线程内运行.
操作系统 - Windows XP
由于线程具有相同的优先级,因此哪个线程获得锁将是相当任意的。看来您想要等待条件变量而不是使用简单的互斥体。你仍然会有一个互斥锁;条件变量是互斥锁之上的一个概念。另一种可能性是使用同步屏障。
编辑:使用 pthreads 接口(C 风格)使用条件变量的示例: https://computing.llnl.gov/tutorials/pthreads/#ConVarSignal
您需要问自己一个重要的问题:经过所有这些等待和同步,您买东西了吗?使用线程的目的是让一些事情并行运行。如果没有发生这种情况,则多线程应用程序的运行速度比应用程序根本不使用线程时要慢。