我在std::shared_lock
模板类的新标准中非常缺少。
在Boost.Thread中有boost::shared_lock
,甚至存在boost::upgrade_lock
。
为什么这样,C ++ 11中没有std :: shared_lock和std::unique_lock
?
如何获得与boost::shared_lock
类似的行为,但在纯C ++ 11中呢?
我正在考虑使用boost::shared_lock<std::mutex>
,但这没有多大意义,因为std::mutex
没有lock_shared()
成员。而且,没有std::shared_mutex
。
答案 0 :(得分:11)
霍华德对std::shared_mutex
的提议由于没有时间正确考虑而拒绝了C ++ 11。他再次为C ++ 17提出了这个问题,本周在波特兰的会议上讨论了它。
同时,如果你可以使用Boost那么你也可以;标准化不会有任何新功能。
也就是说,值得检查的是,使用shared_mutex
实际上是有益的 - 在许多情况下,由于互斥锁本身的争用,它无法提供所希望的性能提升。