Есть ли в boost функция для определения количества людей, ожидающих блокировки мьютекса? - PullRequest
2 голосов
/ 24 августа 2011

Я использую Boost 1.41.0.Есть ли способ использовать повышение, чтобы узнать, сколько людей ожидает блокировки?

Ответы [ 2 ]

6 голосов
/ 24 августа 2011

Нет: нет надежного ответа, так как он может измениться до возврата функции, и интерфейс Boost также не предоставляет ненадежного метода.

Если вы хотите такую ​​вещь, вы 'Вам нужно будет реализовать свой собственный потокобезопасный счетчик рядом с мьютексом;Я не уверен, что вы могли бы сделать это надежно, но вы могли бы довольно легко различить «примерно нет», «несколько» и «много», если этого достаточно для ваших нужд.

0 голосов
/ 24 августа 2011

Вы можете разместить мьютекс вокруг запроса мьютекса, который увеличивает счетчик и позволяет получить доступ к мьютексу только тогда, когда этот счетчик равен нулю.

Хотя это кажется ужасным перебором.Вероятно, лучший способ сделать это - создать небольшую очередь и добавить в нее все запросы (с мьютексом вокруг push_back и pop_front и дополнительным peek_front).

Это довольно интересное упражнениеделай, правда.

...