37

どちらが好ましいですboost::lock_guardboost::mutex::scoped_lock

Boost.Threadを使用しており、利用可能になったときにC++11スレッドに移行することを望んでいます。

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

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


:私はそれscoped_lockが単なるのtypedefであることを知っていlock_guardます。


編集:私は間違っていたのでscoped_lockはありません。のです。typedeflock_guardtypedefunique_lock

4

2 に答える 2

30

アミットは正しいです:boost::mutex::scoped_lockはのtypedefためboost::unique_lock<boost::mutex>であり、ではありませんlock_guardscoped_lockC++0xでは使用できません。

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

于 2010-02-26T16:21:49.527 に答える
27

2つの間に大きな違いはありません。Boostによるscoped_lockと、はのtypedefですunique_lock<mutex>。とRAIIスタイルのロックの両方をunique_lock実装します。lock_guard違いunique_lockは、より複雑なインターフェイスを備えていることです。これにより、ロックを延期し、ロック解除を呼び出すことができます。

于 2010-02-17T16:35:19.800 に答える