Как сделать shared_lock или upgrade_lock в стандарте C ++ 11?

Я очень скучаю по новому стандарту std::shared_lock шаблон класса.
В Boost.Thread есть boost::shared_lock, четное boost::upgrade_lock существует.

Почему это так, нет std :: shared_lock и std::unique_lock в С ++ 11?
Как можно приобрести подобное поведение как boost::shared_lock имеет, но в чистом C ++ 11?

Я думал использовать boost::shared_lock<std::mutex>, но это не имеет особого смысла, так как std::mutex не имеет lock_shared() член. А так же нет такого как std::shared_mutex,

6

Решение

Предложение Говарда о std::shared_mutex было отказано для C ++ 11 из-за нехватки времени, чтобы рассмотреть это должным образом. Он снова предложил это для C ++ 17, и это обсуждается на встрече в Портленде на этой неделе.

В то же время, если вы можете использовать Boost, то вы можете также; Там не будет никакой новой функциональности для его стандартизации.

Тем не менее, стоит проверить, что с помощью shared_mutex на самом деле полезен — во многих случаях он не обеспечивает ожидаемого прироста производительности из-за конфликта на самом мьютексе.

11

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector