C++互斥锁定线程优先级

C++ mutex locking thread priority

我希望为一个线程赋予优先级,这样如果两个线程都在等待互斥锁,那么优先级最高的线程将始终在优先级较低的线程之前获取互斥锁。

一位同事建议我应该通过更改线程的线程优先级来实现这一点。我尝试使用 SetThreadPriority() 函数将一个等待线程设置为 0(正常),将另一个设置为 2(最高),但它并没有像我希望的那样影响互斥行为。锁当前总是转到请求所有权的第一个线程。

那么这种行为正常吗?跟我同事的想法相反?有没有其他方法可以赋予我可能缺少的线程优先级?或者我正在寻找更复杂的问题来解决?

线程优先级表示线程在 CPU 上的时间由调度程序决定,它会优先调度更高优先级的线程——它不会影响互斥锁的行为,我也不会知道任何让它这样做的方法。

通常互斥锁是没有偏见的。这可以作为临时互斥体实现,它有优先级倾向,也可以管理饥饿。