我希望优先考虑一个线程,这样如果两个线程正在等待互斥锁,那么具有最高优先级的线程将始终在较低优先级之前使用互斥锁。
一位同事建议通过改变我的线程的线程优先级来实现。我尝试使用SetThreadPriority()
函数将其中一个等待线程设置为0(正常),将另一个设置为2(最高),但它不会像我希望的那样影响互斥体行为。锁当前总是转到请求所有权的第一个线程。
这种行为正常吗?与我同事的想法相反?是否有一种不同的方式来提供我可能缺少的线程优先级?或者我正在寻找一个更复杂的问题来解决?
答案 0 :(得分:2)
线程优先级表示调度程序确定线程在CPU上运行的时间,调度程序将优先调度更高优先级的线程 - 它不会影响互斥锁的行为,我不知道有任何制作方法它会这样做。
答案 1 :(得分:0)
通常互斥锁不带偏见。可以将其实现为优先使用的即席互斥体,也可以管理饥饿。