summaryrefslogtreecommitdiff
path: root/boost/thread/pthread/pthread_mutex_scoped_lock.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/thread/pthread/pthread_mutex_scoped_lock.hpp')
-rw-r--r--boost/thread/pthread/pthread_mutex_scoped_lock.hpp24
1 files changed, 15 insertions, 9 deletions
diff --git a/boost/thread/pthread/pthread_mutex_scoped_lock.hpp b/boost/thread/pthread/pthread_mutex_scoped_lock.hpp
index cdbf8c6740..e3b9990311 100644
--- a/boost/thread/pthread/pthread_mutex_scoped_lock.hpp
+++ b/boost/thread/pthread/pthread_mutex_scoped_lock.hpp
@@ -1,6 +1,6 @@
#ifndef BOOST_PTHREAD_MUTEX_SCOPED_LOCK_HPP
#define BOOST_PTHREAD_MUTEX_SCOPED_LOCK_HPP
-// (C) Copyright 2007-8 Anthony Williams
+// (C) Copyright 2007-8 Anthony Williams
//
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
@@ -20,41 +20,47 @@ namespace boost
pthread_mutex_t* m;
bool locked;
public:
- explicit pthread_mutex_scoped_lock(pthread_mutex_t* m_):
+ explicit pthread_mutex_scoped_lock(pthread_mutex_t* m_) BOOST_NOEXCEPT:
m(m_),locked(true)
{
BOOST_VERIFY(!pthread_mutex_lock(m));
}
- void unlock()
+ void unlock() BOOST_NOEXCEPT
{
BOOST_VERIFY(!pthread_mutex_unlock(m));
locked=false;
}
-
- ~pthread_mutex_scoped_lock()
+ void check() BOOST_NOEXCEPT
+ {
+ if(locked)
+ {
+ unlock();
+ }
+ }
+ ~pthread_mutex_scoped_lock() BOOST_NOEXCEPT
{
if(locked)
{
unlock();
}
}
-
+
};
class pthread_mutex_scoped_unlock
{
pthread_mutex_t* m;
public:
- explicit pthread_mutex_scoped_unlock(pthread_mutex_t* m_):
+ explicit pthread_mutex_scoped_unlock(pthread_mutex_t* m_) BOOST_NOEXCEPT:
m(m_)
{
BOOST_VERIFY(!pthread_mutex_unlock(m));
}
- ~pthread_mutex_scoped_unlock()
+ ~pthread_mutex_scoped_unlock() BOOST_NOEXCEPT
{
BOOST_VERIFY(!pthread_mutex_lock(m));
}
-
+
};
}
}