当一个线程做的工作多于另一个线程时,我正在研究一个遭受饥饿的程序。关键部分受到可重入QMutex的保护,这是不公平的。
在Java中,您可以为锁定指定公平性参数。 C ++,(或boost库)是否有可用的公平重入锁定?最好是C ++ 11。
之前我做了一些研究,在boost中有shared_lock,但我不需要读/写锁。只是一个锁,它将保证每个线程都有相同的机会进入临界区。
非常感谢。
答案 0 :(得分:2)
C ++线程原语实际上是基于Posix线程的,而Posix没有任何公平的互斥体。但是,您的问题表明您的设计存在问题。这里有两个问题: