【问题标题】:About boost::lock_guard and boost::unique_lock关于 boost::lock_guard 和 boost::unique_lock
【发布时间】:2013-05-13 21:04:02
【问题描述】:

我希望有人能告诉我我对以下 3 把锁的理解是否正确,并可能补充。我主要关心的是速度和开销最小。

  • boost::lock_guard
  • boost::unique_lock
  • boost::scoped_lock

boost::lock_guard 是最轻的一种锁,只在进程的成员之间共享。 unique_lock 是 lock_guard 的改进版本,具有更多功能。 scoped_lock 允许跨不同进程锁定。scoped_lock 是所有锁中最重的。我的理解是否正确。但是,线程here 声明 scoped_lock 类似于 unique_lock。如果是这样,这是否意味着scoped_lockunique_lock 一样重?

【问题讨论】:

  • 你能澄清一下你问的是哪个 Boost 库吗?您链接到的问题是讨论 Boost.Thread,但该库在命名空间级别不包含名为 scoped_lock 的类(仅类级别 typedefs)。您还提到了进程之间的共享,这表明 Boost.Interprocess (在 boost::interprocess 命名空间中有一个名为 scoped_lock 的类)。谢谢。

标签: c++ multithreading boost locking mutex


【解决方案1】:

如果您所说的重是开销的数量,那么是的,scoped_lock 与 unique_lock 一样重,因为它们是同一回事。根据this 的说法,唯一锁比 lock_guard 具有更多功能,但代价是一些开销。

【讨论】:

    猜你喜欢
    • 2011-10-07
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-18
    • 1970-01-01
    • 2011-03-12
    相关资源
    最近更新 更多