aseprite/src/base/scoped_lock.h
2010-09-23 23:33:39 -03:00

44 lines
934 B
C++

// ASE base library
// Copyright (C) 2001-2010 David Capello
//
// This source file is ditributed under a BSD-like license, please
// read LICENSE.txt for more information.
#ifndef BASE_SCOPED_LOCK_H_INCLUDED
#define BASE_SCOPED_LOCK_H_INCLUDED
#include "base/disable_copying.h"
// An object to safely lock and unlock mutexes.
//
// The constructor of ScopedLock locks the mutex, and the destructor
// unlocks the mutex. In this way you can safely use ScopedLock inside
// a try/catch block without worrying about the lock state of the
// mutex if some exception is thrown.
class ScopedLock
{
public:
ScopedLock(Mutex& mutex) : m_mutex(mutex) {
m_mutex.lock();
}
~ScopedLock() {
m_mutex.unlock();
}
Mutex& getMutex() const {
return m_mutex;
}
private:
Mutex& m_mutex;
// Undefined constructors.
ScopedLock();
DISABLE_COPYING(ScopedLock);
};
#endif