diff options
Diffstat (limited to 'boost/thread/pthread/pthread_mutex_scoped_lock.hpp')
-rw-r--r-- | boost/thread/pthread/pthread_mutex_scoped_lock.hpp | 24 |
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)); } - + }; } } |