我想使用新的标准线程来代替boost:threads,但我注意到旧的shared_mutex不可用。有什么好的建议来替换这个功能并给我一个多读单写锁?
我想使用新的标准线程来代替boost:threads,但我注意到旧的shared_mutex不可用。有什么好的建议来替换这个功能并给我一个多读单写锁?
std::shared_mutex
将成为C++14标准库的一部分。它没有被纳入C++11标准只是因为没有时间制定提案并进行充分讨论。
您仍然可以使用boost::shared_mutex
。在Windows环境下,如果您正在使用Windows Vista或更高版本,则可以使用Slim读写锁,它们针对速度和内存消耗进行了优化。
pthread_rwlock
。 - pyCthonconst
吗?我一生中见过更多错误使用shared_mutex
的情况,而不是正确使用。要正确使用shared_mutex
,必须声明在读取器临界区内能够将共享对象声明为const
且没有任何编译器警告。"消费者"并不等同于"完全不修改数据结构的人"。const
调用。从第一次使用共享对象到最后一次使用共享对象的数据依赖路径以外的许多额外工作可以移至关键段之外。std::list
性能差,或者在前面插入数百万个元素时使用std::vector
性能差一样。如果你的读操作不超过写操作,那么rw-locks也不会有什么优劣之分(可能还会更糟)。但那是使用了错误的工具。 - Damon