boost::unique_lock和boost::upgrade_lock之间的区别? 我是C++中线程概念的新手。我只想知道几件事:一个boost::unique\u lock与boost::upgrade\u lock有何不同?

boost::unique_lock和boost::upgrade_lock之间的区别? 我是C++中线程概念的新手。我只想知道几件事:一个boost::unique\u lock与boost::upgrade\u lock有何不同?,c++,boost,boost-thread,C++,Boost,Boost Thread,独占所有权与升级所有权的实际区别 也许可以说独占所有权是线程安全的,但不是升级所有权, 在这种情况下,我想知道如果 可以吗?我想知道什么是升级锁允许还是不允许 unique\u lock除了独占锁之外,不做其他事情。不提供独占锁 升级锁使其类似于共享锁或什么,如果是,则如何 与共享锁不同 @Xeo yes upgrade_lock可通过以下方式升级为uniue_lock 升级_yo_unique_lock。那么为什么我们需要共享锁呢 共享锁定无法升级为唯一锁定?这是唯一的事吗 对 shared_

独占所有权与升级所有权的实际区别

也许可以说独占所有权是线程安全的,但不是升级所有权, 在这种情况下,我想知道如果 可以吗?我想知道什么是升级锁允许还是不允许
unique\u lock
除了独占锁之外,不做其他事情。不提供独占锁
升级锁
使其类似于
共享锁
或什么,如果是,则如何 与共享锁不同


@Xeo yes upgrade_lock可通过以下方式升级为uniue_lock 升级_yo_unique_lock。那么为什么我们需要共享锁呢 共享锁定无法升级为唯一锁定?这是唯一的事吗

shared_mutex
仅用于提供传统读/写互斥体的功能。可以理解的是,一些客户端对互斥锁从一个锁模式切换到另一个锁模式持怀疑态度,但仍然需要rw/互斥锁的传统功能。这是共享互斥体的角色


其他客户会看到共享互斥锁,然后说:我想要更多。有时我想将我的所有权从共享升级到独占。这就是
升级互斥锁的作用<代码>升级互斥锁
并不比共享互斥锁好,反之亦然。它只是工具箱中的另一个工具

升级锁和唯一锁之间的区别很简单。
unique\u lock
的一个实例正在获得
共享\u互斥体的完全独占所有权。这意味着当
unique\u lock
处于活动状态时,其他人无法获得任何类型的所有权

unique\u lock
不同,
upgrade\u lock
的一个实例正在获取一个升级所有权,该所有权仅在试图获取相同升级所有权的线程之间是独占的。在
升级锁
升级到unique(使用
升级到唯一锁
的实例)之前,尝试获取共享所有权的所有其他线程都可以毫无冲突地获取它


当某些线程只能是读线程,而不会试图将自身升级为写线程时,
升级锁定
非常有用。否则(所有读者都可能在某个时候成为作家)
upgrade\u lock
将作为
unique\u lock

运行。您阅读了吗?我正在浏览,但找不到两者之间区别的详细解释。@JamesMcNellis我想知道除了独占锁之外,upgrade\u lock允许或不允许唯一锁做什么。升级锁不提供独占锁使其类似于共享锁或什么,如果是,那么它与共享锁有何不同?这在SharedLockable需求中得到了确切的回答。
升级锁
通常是
共享锁
,但可以升级为
唯一锁
@Xeo yes upgrade\u lock可以通过升级唯一锁升级为唯一锁。那么为什么我们需要共享锁呢?是因为共享锁不能升级为唯一锁吗?这是唯一的事吗?