web-dev-qa-db-ja.com

boost :: lock_guardとboost :: mutex :: scoped_lock

boost::lock_guardまたはboost::mutex::scoped_lockのどちらが望ましいですか?

私はBoost.Threadを使用していますが、C++ 11スレッド化が利用可能になったときに移行することを期待しています。

scoped_lockは次のC++標準の一部ですか?

どちらかを優先する利点はありますか?


[〜#〜]注[〜#〜]scoped_locklock_guardtypedefにすぎないことを認識しています。


編集:私は間違っていましたscoped_locknotlock_guardtypedefです。 unique_locktypedefです。

37
deft_code

Amitは正しい:boost::mutex::scoped_lockboost::unique_lock<boost::mutex>typedefであり、lock_guardではありません。 scoped_lockはC++ 0xでは使用できません。

unique_lockの柔軟性が必要でない限り、lock_guardを使用します。それはより単純で、ロックを定義されたスコープに制限する意図をより明確に表現します。

30

2つの間に大きな違いはありません。 Boost のとおり、scoped_lockunique_lock<mutex>のtypedefです。 unique_locklock_guardはどちらもRAIIスタイルのロックを実装しています。違いは、unique_lockのインターフェースがより複雑であることだけです。これにより、ロックを延期してロック解除を呼び出すことができます。

27
amit