#ifndef _THRIFT_CONCURRENCY_MUTEX_H_ | |
#define _THRIFT_CONCURRENCY_MUTEX_H_ 1 | |
namespace facebook { namespace thrift { namespace concurrency { | |
/** | |
* A simple mutex class | |
* | |
* @author marc | |
* @version $Id:$ | |
*/ | |
class Mutex { | |
public: | |
Mutex(); | |
virtual ~Mutex() {} | |
virtual void lock() const; | |
virtual void unlock() const; | |
private: | |
class impl; | |
impl* impl_; | |
}; | |
class MutexMonitor { | |
public: | |
MutexMonitor(const Mutex& value) : mutex_(value) { | |
mutex_.lock(); | |
} | |
~MutexMonitor() { | |
mutex_.unlock(); | |
} | |
private: | |
const Mutex& mutex_; | |
}; | |
}}} // facebook::thrift::concurrency | |
#endif // #ifndef _THRIFT_CONCURRENCY_MUTEX_H_ |