boost :: lock_guard vs boost :: mutex :: scoped_lock
哪一个是首选boost::lock_guard
或boost::mutex::scoped_lock
?
我正在使用Boost.Thread,希望在C ++ 11线程变为可用时转向它。
scoped_lock
是下一个c ++标准的一部分吗?
有什么优势比其他优先?
注意 :我知道scoped_lock
只是lock_guard
的typedef
。
编辑:我错了scoped_lock
不是 lock_guard
typedef
。 这是unique_lock
的typedef
。
Amit是正确的: boost::mutex::scoped_lock
是boost::unique_lock<boost::mutex>
的typedef
,而不是lock_guard
。 scoped_lock
在C ++ 0x中不可用。
除非你需要unique_lock
的灵活性, unique_lock
我会使用lock_guard
。 它更简单,并且更清楚地expression了将locking限制在定义范围的意图。
两者差别不大。 根据Boost , scoped_lock
是unique_lock<mutex>
的typedef。 unique_lock
和lock_guard
实现了RAII风格的locking。 简单地说, unique_lock
具有更复杂的界面 – 它允许推迟locking和调用解锁。