Not much difference between the two. As per Boost, scoped_lock is a typedef for unique_lock. Both of unique_lock and lock_guard implement RAII-style locking. The difference between is simply that unique_lock has a more complex interface -- it allows to defer lock and call unlock.