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

def*_*ode 37 boost future-proof c++11

这是首选boost::lock_guard还是boost::mutex::scoped_lock

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

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

是否优先选择其他优势?


:我知道,scoped_lock仅仅是一个typedeflock_guard.


编辑:我错了scoped_lock不是typedeflock_guard.这是一个typedefunique_lock.

Ant*_*ams 29

艾米特是正确的:boost::mutex::scoped_locktypedefboost::unique_lock<boost::mutex>,没有lock_guard.scoped_lock在C++ 0x中不可用.

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


ami*_*mit 27

两者之间差别不大.根据Boost,scoped_lock是一个typedef unique_lock<mutex>.双方unique_locklock_guard实现RAII风格锁.两者之间的区别仅在于它unique_lock具有更复杂的界面 - 它允许延迟锁定和调用解锁.