提升UpgradeLockable概念

时间:2014-12-24 17:54:42

标签: c++ multithreading boost

为什么Boost UpgradeLockable概念(http://www.boost.org/doc/libs/1_57_0/doc/html/thread/synchronization.html#thread.synchronization.mutex_concepts.upgrade_lockable)有unlock_and_lock_ *和unlock_upgrade_and_lock_ *但是没有unlock_shared_and_lock_ ?它有try_unlock_shared_and_lock _ 但只有当BOOST_THREAD_PROVIDES_SHARED_MUTEX_UPWARDS_CONVERSIONS可用且我不想尝试"时。进行此类操作有一些限制吗?

1 个答案:

答案 0 :(得分:1)

可升级锁的全部目的是您可以将其自动升级为独占锁。如果您可以使用共享锁执行此操作,可升级锁的用途是什么?

如果您有unlock_shared_and_lock,如果两个线程同时调用它会发生什么?在什么情况下可以安全地打电话?

如果您可能需要以原子方式升级锁,则需要获取可升级的锁。这就是他们的全部目的。