C++中unique_lock和shared_lock有什么区别?

4
尝试理解何时可以使用shared_lockunique_lock。C ++文档非常晦涩!我知道一般的指导方针是,如果我们需要立即的作用域互斥(或RAII),则使用 lock_guard 而不是这两个。
这与condition_variable有关吗?如果我记得正确,我已经看到所有三个选项都与此选项一起使用。
我曾在stackoverflow上看到一个类似的问题,但避免在此回答此问题:https://dev59.com/hVsX5IYBdhLWcg3wePZ5)%20is%20a%20function,the%20end%20of%20the%20scope
1个回答

6
很简单,实际上。 unique_lock 在互斥量上调用lock()shared_lock 调用shared_lock()
它们之间的区别在于,shared_lock被设计为在读写锁中支持读者。 您可以有多个线程都获取共享锁并读取相同数据,但是如果任何人想要写入数据,则需要使用lock获取写入数据的许可。
哪一个您应该使用取决于您正在寻找的模式。 有很多时候需要读写锁(这就是为什么标准包括对它们的支持)。 也有一些时候需要一个简单的独特互斥量。 通常,如果读和写是您的重要概念,那么像shared_timed_mutex这样的读写互斥量可能是正确的方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接