Last Updated: June 6, 2026
std::lock_guard (since C++11, in <mutex>) is the simplest RAII wrapper around a mutex. Its constructor locks the mutex, its destructor unlocks it, and that's all. No other state, no other methods. This chapter walks through why manual lock/unlock is fragile, what lock_guard does about it, the rules it imposes (no early unlock, no moving, no copying), nested locking with multiple guards, and the deadlock risks that come with that.