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

时间:2012-10-18 11:53:14

标签: c++ multithreading c++11 mutex boost-thread

我在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

1 个答案:

答案 0 :(得分:11)

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

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

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