Как предотвратить голодание потоков в C ++ 11

Мне просто интересно, есть ли какая-либо политика блокировки в C ++ 11, которая бы предотвращала голодание потоков.

У меня есть куча потоков, которые конкурируют за один мьютекс. Теперь моя проблема в том, что поток, покидающий критическую секцию, сразу же начинает конкурировать за тот же мьютекс, и большую часть времени выигрывает. Поэтому другие потоки, ожидающие мьютекса, голодают.

Я не хочу, чтобы поток, выходящий из критической секции, спал в течение некоторого минимального времени, чтобы дать другим потокам возможность заблокировать мьютекс.

Я думал, что должен быть какой-то параметр, который позволил бы справедливую блокировку для потоков, ожидающих на мьютексе, но я не былне в состоянии найти любое подходящее решение.

Ну, я нашел функцию std :: this_thread :: yield (), которая предполагает перепланирование порядка выполнения потоков, но это только подсказка для потока планировщика и зависит от реализации потока планировщика, если он перепланирует потоки или нет.

Есть ли способ, как обеспечить справедливую политику блокировки для потоков, ожидающих на том же мьютексе в C ++ 11? Каковы обычные стратегии?

Спасибо

Ответы на вопрос(1)

Ваш ответ на вопрос