Я очень скучаю по новому стандарту 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
,
Предложение Говарда о std::shared_mutex
было отказано для C ++ 11 из-за нехватки времени, чтобы рассмотреть это должным образом. Он снова предложил это для C ++ 17, и это обсуждается на встрече в Портленде на этой неделе.
В то же время, если вы можете использовать Boost, то вы можете также; Там не будет никакой новой функциональности для его стандартизации.
Тем не менее, стоит проверить, что с помощью shared_mutex
на самом деле полезен — во многих случаях он не обеспечивает ожидаемого прироста производительности из-за конфликта на самом мьютексе.
Других решений пока нет …