2017-06-12 52 views
3

我期待优先线程,因此如果两个线程正在等待一个互斥体,具有最高优先级的线程将永远是优先级较低的人之前采取互斥。C++互斥锁的线程的优先级

一位同事建议,通过改变我的线程的线程的优先级我应该做到这一点。我尝试使用SetThreadPriority()函数将其中一个等待线程设置为0(正常),另一个线程设置为2(最高),但不会像我期望的那样影响互斥体行为。当前锁总是进入请求所有权的第一个线程。

那么这种行为是否正常?与我的同事的想法相反?有没有不同的方法可以让线程优先,我可能会失踪?或者我正在寻找一个更复杂的问题来解决?

+1

我的问题直接指如果线程的优先级(由SetThreadPriority函数定义())对互斥量优先级的影响,你指的是这个问题似乎不这样做。尽管它们是相似的,但我不认为它们的答案完全相同。 – lhbortho

+0

嗯..对不起。它肯定回答了这个问题:“我希望优先考虑一个线程,这样如果两个线程正在等待互斥锁,那么具有最高优先级的线程将始终在较低优先级的线程之前占用互斥锁。” – Drop

+1

是的,我同意,我的下一步肯定是看看你提到的问题。我只是想确认线程优先级本身并不是第一个因素。 – lhbortho

回答

2

线程优先级说,随着由调度,这将优先调度高优先级的线程确定的线程CPU上多少时间得到 - 它不会影响互斥的行为,我不知道的任何手段让它这样做。