2013-05-13 74 views
1

我希望有人能告訴我,如果我對以下3個鎖的理解是正確的並可能添加到它。我主要關心的是速度和最小的開銷。關於boost :: lock_guard和boost :: unique_lock

  • 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一樣重?

+0

你能澄清你問的是哪個Boost庫嗎?您鏈接到的問題是討論Boost.Thread,但該庫在名稱空間級別(僅類級別typedefs)中不包含名爲'scoped_lock'的類。您還提到了在建議Boost.Interprocess(在'boost :: interprocess'命名空間中有一個名爲'scoped_lock'的類)的進程之間的共享。謝謝。 – 2013-05-15 12:00:32

回答

0

如果你的意思是重量是開銷的數量,那麼是scoped_lock和unique_lock一樣重,因爲它們是相同的東西。根據this,唯一的鎖具有比lock_guard更多的功能,代價是一些開銷。

+0

所以然後unique_lock也可以跨進程共享。 – MistyD 2013-05-14 00:06:03