如何在标准C 11中制作共享_lock或upgrade_lock

How to make a shared_lock or upgrade_lock in standard C++11?

本文关键字:lock 共享 upgrade 标准      更新时间:2023-10-16

我在新标准中非常缺少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

霍华德对std::shared_mutex的提议被拒绝,因为缺乏时间来正确考虑它,因此C 11被拒绝。他再次为C 17提出了建议,并在本周在波特兰举行的会议上进行了讨论。

同时,如果您可以使用Boost,那么您也可以;它不会有任何新功能。

也就是说,值得检查使用shared_mutex实际上是有益的 - 在许多情况下,由于对Mutex本身的争论,它并没有提供希望的表现。