aumentar scoped_lock vs plain lock / unlock

Eu vou usarboost::mutex deboost/thread/mutex.hpp. Existem várias maneiras de bloquear / desbloquear mutex: comscoped_lock, unique_lock, lock_guardfunções de membro do mutex::lock() e::unlock() e funções não membroslock() eunlock().

Eu percebi issoboost::scoped_mutex é uma das formas mais populares de usar o mutex. Por que é preferível às funções de membro::lock() e::unlock()?

Particularmente, por que devo usar

{
  boost::scoped_lock lock(mutex)
  // ...
  // read/output sharing memory.
  // ...
}

ao invés de

mutex.lock()
// ...
// read/output sharing memory.
// ...
mutex.unlock()

éscoped_lock melhor apenas por causa de algum ponto de vista de codificação de estilo ou é::lock()/::unlock() não "fio seguro o suficiente"?

questionAnswers(2)

yourAnswerToTheQuestion