Zamierzam użyć boost::mutex
z boost/thread/mutex.hpp
. Istnieje kilka sposobów, aby zablokować/odblokować mutex: z scoped_lock
, unique_lock
, lock_guard
, funkcje składowe mutex za ::lock()
i ::unlock()
i funkcji nie będących członkami lock()
i unlock()
.doładowanie scoped_lock kontra zwykły zamek/odblokowanie
Zauważyłem, że boost::scoped_mutex
jest jednym z najpopularniejszych sposobów używania mutex. Dlaczego jest to lepsze niż funkcje składowe ::lock()
i ::unlock()
?
Szczególnie, dlaczego należy używać
{
boost::scoped_lock lock(mutex)
// ...
// read/output sharing memory.
// ...
}
zamiast
mutex.lock()
// ...
// read/output sharing memory.
// ...
mutex.unlock()
jest scoped_lock
lepiej tylko dlatego, że jakiś styl kodowania punktu widzenia lub nie jest ::lock()/::unlock()
„gwint wystarczająco bezpieczny”?
dziękuję za jasne wyjaśnienie. – Max
@Max: Cieszę się, że pomogło –