PageRenderTime 32ms CodeModel.GetById 28ms app.highlight 2ms RepoModel.GetById 1ms app.codeStats 0ms

/Src/Dependencies/Boost/boost/thread/pthread/pthread_mutex_scoped_lock.hpp

http://hadesmem.googlecode.com/
C++ Header | 64 lines | 50 code | 9 blank | 5 comment | 1 complexity | 31957fabbb46f253bdada1b97dca1a21 MD5 | raw file
 1#ifndef BOOST_PTHREAD_MUTEX_SCOPED_LOCK_HPP
 2#define BOOST_PTHREAD_MUTEX_SCOPED_LOCK_HPP
 3//  (C) Copyright 2007-8 Anthony Williams 
 4//
 5//  Distributed under the Boost Software License, Version 1.0. (See
 6//  accompanying file LICENSE_1_0.txt or copy at
 7//  http://www.boost.org/LICENSE_1_0.txt)
 8
 9#include <pthread.h>
10#include <boost/assert.hpp>
11
12#include <boost/config/abi_prefix.hpp>
13
14namespace boost
15{
16    namespace pthread
17    {
18        class pthread_mutex_scoped_lock
19        {
20            pthread_mutex_t* m;
21            bool locked;
22        public:
23            explicit pthread_mutex_scoped_lock(pthread_mutex_t* m_):
24                m(m_),locked(true)
25            {
26                BOOST_VERIFY(!pthread_mutex_lock(m));
27            }
28            void unlock()
29            {
30                BOOST_VERIFY(!pthread_mutex_unlock(m));
31                locked=false;
32            }
33            
34            ~pthread_mutex_scoped_lock()
35            {
36                if(locked)
37                {
38                    unlock();
39                }
40            }
41            
42        };
43
44        class pthread_mutex_scoped_unlock
45        {
46            pthread_mutex_t* m;
47        public:
48            explicit pthread_mutex_scoped_unlock(pthread_mutex_t* m_):
49                m(m_)
50            {
51                BOOST_VERIFY(!pthread_mutex_unlock(m));
52            }
53            ~pthread_mutex_scoped_unlock()
54            {
55                BOOST_VERIFY(!pthread_mutex_lock(m));
56            }
57            
58        };
59    }
60}
61
62#include <boost/config/abi_suffix.hpp>
63
64#endif