如何设置在C/c ++中获取互斥锁的优先级

Sur*_*uri 6 c c++ windows mutex multiprocessing

我有3个进程(相同的优先级)

  1. P1
  2. P2
  3. P3(定时器)

获取互斥锁的优先级如下: P1(1 priority), P2(2 priority), P3(timer)(3 priority)

如果假设p3来了并获得互斥量然后p2在p1到来之后等待互斥量并且它还等待互斥量

如果p3释放互斥,那么p1应该得到互斥锁p2.

如何在C或C++中执行此操作.

注意:所有进程都在具有相同优先级的线程内运行.

操作系统 - Windows XP

Dav*_*men 2

由于线程具有相同的优先级,因此哪个线程获得锁将是相当任意的。看来您想要等待条件变量而不是使用简单的互斥体。你仍然会有一个互斥锁;条件变量是互斥锁之上的一个概念。另一种可能性是使用同步屏障。

编辑:使用 pthreads 接口(C 风格)使用条件变量的示例: https://computing.llnl.gov/tutorials/pthreads/#ConVarSignal

您需要问自己一个重要的问题:经过所有这些等待和同步,您买东西了吗?使用线程的目的是让一些事情并行运行。如果没有发生这种情况,则多线程应用程序的运行速度比应用程序根本不使用线程时要慢。