1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- // (C) Copyright 2012 Vicente J. Botet Escriba
- #ifndef BOOST_THREAD_SHARED_LOCK_GUARD_HPP
- #define BOOST_THREAD_SHARED_LOCK_GUARD_HPP
- #include <boost/thread/detail/config.hpp>
- //#include <boost/thread/locks.hpp>
- #include <boost/thread/lock_options.hpp>
- #include <boost/thread/detail/delete.hpp>
- namespace boost
- {
- template<typename SharedMutex>
- class shared_lock_guard
- {
- private:
- SharedMutex& m;
- public:
- typedef SharedMutex mutex_type;
- BOOST_THREAD_NO_COPYABLE(shared_lock_guard)
- explicit shared_lock_guard(SharedMutex& m_):
- m(m_)
- {
- m.lock_shared();
- }
- shared_lock_guard(SharedMutex& m_,adopt_lock_t):
- m(m_)
- {}
- ~shared_lock_guard()
- {
- m.unlock_shared();
- }
- };
- #ifdef BOOST_THREAD_NO_AUTO_DETECT_MUTEX_TYPES
- template<typename T>
- struct is_mutex_type<shared_lock_guard<T> >
- {
- BOOST_STATIC_CONSTANT(bool, value = true);
- };
- #endif
- }
- #endif // header
|