我想知道C++11是否有锁定策略可以防止线程饥饿。
我有一堆线程竞争一个互斥量。现在,我的问题是离开临界区的线程立即开始竞争同一个互斥量,并大多数时候获胜。因此等待互斥量的其他线程就会挨饿。
我不想让离开临界区的线程休眠一段时间以给其他线程锁定互斥量的机会。
我认为必须有某个参数可以启用对等锁定,以使等待互斥量的线程公平锁定,但我无法找到任何适当的解决方案。
好吧,我发现了std::this_thread::yield()函数,它应该重新安排线程执行的顺序,但它只是调度程序线程的提示,取决于调度程序线程实现是否重新安排线程。
C++11中有没有提供公平锁定策略,以便在等待同一互斥量的线程之间提供公平性?
通常的策略是什么?
谢谢