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仅仅是一个typedef的lock_guard.


编辑:我错了scoped_lock是不是一typedef的lock_guard.这是一个typedef的unique_lock.

Ant*_*ams 29

艾米特是正确的:boost::mutex::scoped_lock是typedef的boost::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_lock并lock_guard实现RAII风格锁.两者之间的区别仅在于它unique_lock具有更复杂的界面 - 它允许延迟锁定和调用解锁.