【问题标题】:boost::lock_guard vs boost::mutex::scoped_lockboost::lock_guard 与 boost::mutex::scoped_lock
【发布时间】:2011-01-17 14:55:13
【问题描述】:

boost::lock_guardboost::mutex::scoped_lock 哪个更受欢迎?

我正在使用 Boost.Thread,希望在 C++11 线程可用时转移到它。

scoped_lock 是下一个 c++ 标准的一部分吗?

偏爱一个比另一个有什么优势吗?


注意:我知道 scoped_lock 只是 lock_guardtypedef


编辑:我错了 scoped_lock不是 typedeflock_guard。这是unique_lock 中的typedef

【问题讨论】:

    标签: boost c++11 future-proof


    【解决方案1】:

    Amit 是对的:boost::mutex::scoped_locktypedefboost::unique_lock<boost::mutex>,而不是 lock_guardscoped_lock 在 C++0x 中不可用。

    除非您需要unique_lock 的灵活性,否则我会使用lock_guard。它更简单,更清楚地表达了将锁限制在定义范围内的意图。

    【讨论】:

    • 我对此有一个疑问:afaik 在 scope_lock 中时,任何对 shared_lock 的调用都将被阻止。 lock_guard 也一样吗?
    【解决方案2】:

    两者差别不大。根据Boostscoped_lockunique_lock<mutex> 的类型定义。 unique_locklock_guard 都实现了 RAII 样式的锁定。两者的区别只是unique_lock 有一个更复杂的接口——它允许延迟锁定和调用解锁。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-22
      • 2011-10-07
      • 2014-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多