Ho intenzione di utilizzare boost::mutex
da boost/thread/mutex.hpp
. Ci sono diversi modi per bloccare/sbloccare mutex: con scoped_lock
, unique_lock
, lock_guard
, le funzioni membro di mutex ::lock()
e ::unlock()
e funzioni non membro lock()
e unlock()
.boost scoped_lock vs plain lock/unlock
Ho notato che lo boost::scoped_mutex
è uno dei modi più comuni di utilizzo del mutex. Perché è preferibile alle funzioni membro ::lock()
e ::unlock()
?
In particolare, perché dovrei usare
{
boost::scoped_lock lock(mutex)
// ...
// read/output sharing memory.
// ...
}
piuttosto che
mutex.lock()
// ...
// read/output sharing memory.
// ...
mutex.unlock()
è scoped_lock
meglio solo a causa di un certo punto di vista lo stile di codifica o è ::lock()/::unlock()
non "filo abbastanza sicuro"?
grazie per la chiara spiegazione. – Max
@Max: sono contento che l'abbia aiutato –