mutex.verrouillage vs unique_lock

Quand dois-je préfère le premier morceau de code pour la deuxième, et ils n'ont pas de différences fondamentales

std::mutex mtx;
mtx.lock();
... //protected stuff
mtx.unlock();
... //non-protected stuff
mtx.lock();
... //etc

et

std::mutex mtx;
std::unique_lock<std::mutex> lck(mtx);
... //protected stuff
lck.unlock();
... //non-protected stuff
lck.lock();
... //etc

Je ne comprends que lock_guard est fondamentalement un unique_lock sans la verrouiller et déverrouiller des fonctions, mais je vais avoir des moment difficile différencier un mutex et d'une serrure à l'aide d'un mutex.