boost::lock_guard
またはboost::mutex::scoped_lock
のどちらが望ましいですか?
私はBoost.Threadを使用していますが、C++ 11スレッド化が利用可能になったときに移行することを期待しています。
scoped_lock
は次のC++標準の一部ですか?
どちらかを優先する利点はありますか?
[〜#〜]注[〜#〜]:scoped_lock
はlock_guard
のtypedef
にすぎないことを認識しています。
編集:私は間違っていましたscoped_lock
はnotlock_guard
のtypedef
です。 unique_lock
のtypedef
です。
Amitは正しい:boost::mutex::scoped_lock
はboost::unique_lock<boost::mutex>
のtypedef
であり、lock_guard
ではありません。 scoped_lock
はC++ 0xでは使用できません。
unique_lock
の柔軟性が必要でない限り、lock_guard
を使用します。それはより単純で、ロックを定義されたスコープに制限する意図をより明確に表現します。
2つの間に大きな違いはありません。 Boost のとおり、scoped_lock
はunique_lock<mutex>
のtypedefです。 unique_lock
とlock_guard
はどちらもRAIIスタイルのロックを実装しています。違いは、unique_lock
のインターフェースがより複雑であることだけです。これにより、ロックを延期してロック解除を呼び出すことができます。