如何在标准C++ 11中创建shared_lock或upgrade_lock?

Gab*_*ton 6 c++ multithreading mutex boost-thread c++11

我从新标准std::shared_lock模板类中非常缺少.在Boost.Thread中boost::shared_lock,甚至boost::upgrade_lock存在.

为什么这样,std::unique_lock在C++ 11中没有std :: shared_lock ?
如何获得类似的行为boost::shared_lock,但在纯C++ 11中呢?

我正在考虑使用boost::shared_lock<std::mutex>,但这没有那么多意义,因为std::mutex没有lock_shared()成员.而且,没有这样的std::shared_mutex.

Ant*_*ams 11

std::shared_mutex由于没有时间考虑它,霍华德的提议因C++ 11而被拒绝.他再次为C++ 17提出这个问题,本周在波特兰举行的会议上对此进行了讨论.

同时,如果你可以使用Boost那么你也可以; 标准化不会有任何新功能.

也就是说,值得检查的是,使用shared_mutex实际上是有益的 - 在许多情况下,由于对互斥锁本身的争用,它无法提供所希望的性能提升.