scoped_lock is a mutex wrapper that provides RAII style mechanism for owning multiple mutexes in a scoped block