Mutex::Mutex() : impl_(new Mutex::impl()) {}
-Mutex::~Mutex() { delete impl_; }
-
void Mutex::lock() const { impl_->lock(); }
bool Mutex::trylock() const { return impl_->trylock(); }
ReadWriteMutex::ReadWriteMutex() : impl_(new ReadWriteMutex::impl()) {}
-ReadWriteMutex::~ReadWriteMutex() { delete impl_; }
-
void ReadWriteMutex::acquireRead() const { impl_->acquireRead(); }
void ReadWriteMutex::acquireWrite() const { impl_->acquireWrite(); }
#ifndef _THRIFT_CONCURRENCY_MUTEX_H_
#define _THRIFT_CONCURRENCY_MUTEX_H_ 1
+#include <boost/shared_ptr.hpp>
+using boost::shared_ptr;
+
namespace facebook { namespace thrift { namespace concurrency {
/**
class Mutex {
public:
Mutex();
- virtual ~Mutex();
+ virtual ~Mutex() {}
virtual void lock() const;
virtual bool trylock() const;
virtual void unlock() const;
private:
+
class impl;
- impl* impl_;
+ shared_ptr<impl> impl_;
};
class ReadWriteMutex {
public:
ReadWriteMutex();
- virtual ~ReadWriteMutex();
+ virtual ~ReadWriteMutex() {}
// these get the lock and block until it is done successfully
virtual void acquireRead() const;
virtual void release() const;
private:
+
class impl;
- impl* impl_;
+ shared_ptr<impl> impl_;
};
class Guard {
rw_mutex_.release();
}
private:
- const ReadWriteMutex rw_mutex_;
+ const ReadWriteMutex& rw_mutex_;
};