我希望为一个线程赋予优先级,这样如果两个线程都在等待互斥锁,那么优先级最高的线程将始终在优先级较低的线程之前获取互斥锁。
一位同事建议我应该通过更改线程的线程优先级来实现这一点。我尝试使用 SetThreadPriority()
函数将一个等待线程设置为 0(正常),将另一个设置为 2(最高),但这并没有像我希望的那样影响互斥行为。锁当前总是转到请求所有权的第一个线程。
那么这种行为正常吗?跟我同事的想法相反?有没有其他方法可以赋予我可能缺少的线程优先级?还是我正在寻找更复杂的问题来解决?
最佳答案
线程优先级表示线程在 CPU 上占用的时间由调度程序确定,它将优先调度更高优先级的线程——它不会影响互斥锁的行为,而且我不知道有什么方法可以使它这样做了。
关于C++互斥锁定线程优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44505992/