]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/thread/include/boost/thread/pthread/pthread_mutex_scoped_lock.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / thread / include / boost / thread / pthread / pthread_mutex_scoped_lock.hpp
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
14 namespace 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