哪个首选boost::lock_guard
或boost::mutex::scoped_lock
?
我正在使用Boost.Thread,希望在它变得可用时转向C ++ 11线程。
scoped_lock
是否是下一个c ++标准的一部分?
是否优先选择其他优势?
注意:我知道scoped_lock
只是typedef
的{{1}}。
编辑:我错了lock_guard
不 scoped_lock
typedef
。它是lock_guard
的{{1}}。
答案 0 :(得分:29)
Amit是对的:boost::mutex::scoped_lock
是typedef
的{{1}},而不是boost::unique_lock<boost::mutex>
。 lock_guard
在C ++ 0x中不可用。
除非您需要scoped_lock
的灵活性,否则我会使用unique_lock
。它更简单,更清楚地表达了将锁定限制在定义范围内的意图。
答案 1 :(得分:26)
两者之间差别不大。根据{{3}},scoped_lock
是unique_lock<mutex>
的typedef。 unique_lock
和lock_guard
都实现了RAII样式的锁定。两者之间的区别仅在于unique_lock
具有更复杂的界面 - 它允许延迟锁定和调用解锁。