boost :: lock_guard vs boost :: mutex :: scoped_lock

哪一个是首选boost::lock_guardboost::mutex::scoped_lock

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

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

有什么优势比其他优先?


注意 :我知道scoped_lock只是lock_guardtypedef


编辑:我错了scoped_lock 不是 lock_guard typedef 。 这是unique_locktypedef

Amit是正确的: boost::mutex::scoped_lockboost::unique_lock<boost::mutex>typedef ,而不是lock_guardscoped_lock在C ++ 0x中不可用。

除非你需要unique_lock的灵活性, unique_lock我会使用lock_guard 。 它更简单,并且更清楚地expression了将locking限制在定义范围的意图。

两者差别不大。 根据Boost , scoped_lockunique_lock<mutex>的typedef。 unique_locklock_guard实现了RAII风格的locking。 简单地说, unique_lock具有更复杂的界面 – 它允许推迟locking和调用解锁。