65 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
#ifndef BOOST_PTHREAD_MUTEX_SCOPED_LOCK_HPP
 | 
						|
#define BOOST_PTHREAD_MUTEX_SCOPED_LOCK_HPP
 | 
						|
//  (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
 | 
						|
//  http://www.boost.org/LICENSE_1_0.txt)
 | 
						|
 | 
						|
#include <pthread.h>
 | 
						|
#include <boost/assert.hpp>
 | 
						|
 | 
						|
#include <boost/config/abi_prefix.hpp>
 | 
						|
 | 
						|
namespace boost
 | 
						|
{
 | 
						|
    namespace pthread
 | 
						|
    {
 | 
						|
        class pthread_mutex_scoped_lock
 | 
						|
        {
 | 
						|
            pthread_mutex_t* m;
 | 
						|
            bool locked;
 | 
						|
        public:
 | 
						|
            explicit pthread_mutex_scoped_lock(pthread_mutex_t* m_):
 | 
						|
                m(m_),locked(true)
 | 
						|
            {
 | 
						|
                BOOST_VERIFY(!pthread_mutex_lock(m));
 | 
						|
            }
 | 
						|
            void unlock()
 | 
						|
            {
 | 
						|
                BOOST_VERIFY(!pthread_mutex_unlock(m));
 | 
						|
                locked=false;
 | 
						|
            }
 | 
						|
            
 | 
						|
            ~pthread_mutex_scoped_lock()
 | 
						|
            {
 | 
						|
                if(locked)
 | 
						|
                {
 | 
						|
                    unlock();
 | 
						|
                }
 | 
						|
            }
 | 
						|
            
 | 
						|
        };
 | 
						|
 | 
						|
        class pthread_mutex_scoped_unlock
 | 
						|
        {
 | 
						|
            pthread_mutex_t* m;
 | 
						|
        public:
 | 
						|
            explicit pthread_mutex_scoped_unlock(pthread_mutex_t* m_):
 | 
						|
                m(m_)
 | 
						|
            {
 | 
						|
                BOOST_VERIFY(!pthread_mutex_unlock(m));
 | 
						|
            }
 | 
						|
            ~pthread_mutex_scoped_unlock()
 | 
						|
            {
 | 
						|
                BOOST_VERIFY(!pthread_mutex_lock(m));
 | 
						|
            }
 | 
						|
            
 | 
						|
        };
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
#include <boost/config/abi_suffix.hpp>
 | 
						|
 | 
						|
#endif
 |