boost c++11 future-proof

boost:: lock_guard vs boost:: mutex:: scoped_lock



c++11 future-proof (2)

¿Qué es preferred boost::lock_guard o boost::mutex::scoped_lock ?

Estoy usando Boost.Thread con la esperanza de pasar a C ++ 11 threading cuando esté disponible.

¿ scoped_lock es parte del próximo estándar de C ++?

¿Hay alguna ventaja para preferir uno sobre el otro?

NOTA : Soy consciente de que scoped_lock es solo un typedef de lock_guard .

edit: estaba equivocado. scoped_lock no es un typedef de lock_guard . Es un tipo de unique_lock .


Amit tiene razón: boost::mutex::scoped_lock es un typedef para boost::unique_lock<boost::mutex> , no lock_guard . scoped_lock no está disponible en C ++ 0x.

A menos que necesite la flexibilidad de unique_lock , usaría lock_guard . Es más simple y expresa más claramente la intención de limitar el bloqueo a un alcance definido.


No hay mucha diferencia entre los dos. Según Boost , scoped_lock es un typedef para unique_lock<mutex> . Tanto unique_lock como lock_guard implementan bloqueo de estilo RAII. La diferencia entre simplemente es que unique_lock tiene una interfaz más compleja: permite diferir el bloqueo y desbloquear las llamadas.