54 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			54 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								// 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
							 |