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

时间:2010-02-16 22:19:13

标签: boost c++11 future-proof

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

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

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

是否优先选择其他优势?


注意:我知道scoped_lock只是typedef的{​​{1}}。


编辑:我错了lock_guard scoped_lock typedef。它是lock_guard的{​​{1}}。

2 个答案:

答案 0 :(得分:29)

Amit是对的:boost::mutex::scoped_locktypedef的{​​{1}},而不是boost::unique_lock<boost::mutex>lock_guard在C ++ 0x中不可用。

除非您需要scoped_lock的灵活性,否则我会使用unique_lock。它更简单,更清楚地表达了将锁定限制在定义范围内的意图。

答案 1 :(得分:26)

两者之间差别不大。根据{{​​3}},scoped_lockunique_lock<mutex>的typedef。 unique_locklock_guard都实现了RAII样式的锁定。两者之间的区别仅在于unique_lock具有更复杂的界面 - 它允许延迟锁定和调用解锁。