This commit is contained in:
JoelKatz
2012-04-19 03:45:23 -07:00
parent 271283b930
commit 7c7ee23c64

View File

@@ -4,6 +4,11 @@
#include <boost/thread/recursive_mutex.hpp>
#include <boost/interprocess/sync/scoped_lock.hpp>
#include <boost/shared_ptr.hpp>
#include <boost/make_shared.hpp>
#include <boost/ref.hpp>
// A lock holder that can be returned and copied by value
// When the last reference goes away, the lock is released
class ScopedLock
{
@@ -11,9 +16,9 @@ protected:
mutable boost::shared_ptr<boost::interprocess::scoped_lock<boost::recursive_mutex> > mHolder;
public:
ScopedLock(boost::recursive_mutex &mutex) :
mHolder(new boost::interprocess::scoped_lock<boost::recursive_mutex>(mutex))
{ ; }
ScopedLock(boost::recursive_mutex& mutex) :
mHolder(boost::make_shared<boost::interprocess::scoped_lock<boost::recursive_mutex> >(boost::ref(mutex)))
{ ; }
void lock() const
{
mHolder->lock();