| 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
 |