c++ - Boost UpgradeLockable概念

标签 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 可用并且我不想“尝试”时。做这样的操作有什么限制吗?

最佳答案

可升级锁的全部目的是您可以自动将其升级为独占锁。如果您可以使用共享锁做到这一点,那么可升级锁的用途是什么?

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

如果您可能需要自动升级锁,则需要获取可升级锁。这就是他们的全部目的。

关于c++ - Boost UpgradeLockable概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27640629/

相关文章:

java - 如何在主线程中为循环中启动的线程定义会合点?

c++ - 为什么 boost::enable_if 不会导致重复重载方法编译错误

c++ - boost::transform_iterator 不适用于 std::bind( &Pair::first, _1 )?

c++ - 我自定义使用 std::unordered_map 的性能非常慢

c++ - 小型 C++ 位集代码的问题

c++ - 将文本文件附加到 Visual Studio 项目...?

c++ - C++ 中的副作用和可观察行为如何相关?

ruby - 如何在线程中捕获异常

multithreading - 具有快速元素删除和随机获取的线程安全可变集合

c++ - boost::detail::atomic_count 线程安全吗?