37

哪个是首选boost::lock_guard还是boost::mutex::scoped_lock

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

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

偏爱一个比另一个有什么优势吗?


注意:我知道这scoped_lock只是typedef.lock_guard


编辑:错了scoped_lock不是. 这是一个。typedeflock_guardtypedefunique_lock

4

2 回答 2

30

Amit 是对的:boost::mutex::scoped_locktypedeffor boost::unique_lock<boost::mutex>,不是lock_guardscoped_lock在 C++0x 中不可用。

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

于 2010-02-26T16:21:49.527 回答
27

Not much difference between the two. As per Boost, scoped_lock is a typedef for unique_lock<mutex>. Both of unique_lock and lock_guard implement RAII-style locking. The difference between is simply that unique_lock has a more complex interface -- it allows to defer lock and call unlock.

于 2010-02-17T16:35:19.800 回答