2010-02-16 15 views
36

Welches ist bevorzugt boost::lock_guard oder boost::mutex::scoped_lock?boost :: lock_guard gegen boost :: mutex :: scoped_lock

Ich benutze Boost.Thread mit der Hoffnung auf C++ 11 Threading zu verschieben, wenn es verfügbar ist.

Ist scoped_lock Teil des nächsten C++ Standards?

Sind die Vorteile, die Sie bevorzugen, die einen?


HINWEIS: Ich bin mir bewusst, dass scoped_lock nur typedef von lock_guard ist.


edit: Ich war falsch scoped_lock ist nicht ein typedef von lock_guard. Es ist ein typedef von unique_lock.

Antwort

28

Amit hat recht: boost::mutex::scoped_lock ist ein typedef für boost::unique_lock<boost::mutex>, nicht lock_guard. scoped_lock ist in C++ 0x nicht verfügbar. Wenn Sie nicht die Flexibilität von unique_lock benötigen, würde ich lock_guard verwenden. Es ist einfacher und drückt deutlicher die Absicht aus, die Sperre auf einen definierten Umfang zu beschränken.

24

Nicht viel Unterschied zwischen den beiden. Gemäß Boost ist scoped_lock ein Typdef für unique_lock<mutex>. Sowohl unique_lock als auch lock_guard implementieren die RAII-artige Verriegelung. Der Unterschied zwischen ist einfach, dass unique_lock eine komplexere Schnittstelle hat - es ermöglicht, Sperre aufzuheben und Entsperrung aufzurufen.

Verwandte Themen