1/* 2================================================================================ 3 PROJECT: 4 5 Eddy C++ Thread Safety Project 6 7 CONTENTS: 8 9 Inline methods of class mutex_lock. 10 11 NOTES: 12 13 See notes of mutex_lock.hpp. 14 15 PROGRAMMERS: 16 17 John Eddy (jpeddy@sandia.gov) (JE) 18 19 ORGANIZATION: 20 21 Sandia National Laboratories 22 23 COPYRIGHT: 24 25 See the LICENSE file in the top level JEGA directory. 26 27 VERSION: 28 29 1.0.0 30 31 CHANGES: 32 33 Sat Sep 13 14:02:10 2003 - Original Version (JE) 34 35================================================================================ 36*/ 37 38 39 40 41/* 42================================================================================ 43Document This File 44================================================================================ 45*/ 46/** \file 47 * \brief Contains the inline methods of the mutex_lock class. 48 */ 49 50 51 52 53/* 54================================================================================ 55Includes 56================================================================================ 57*/ 58 59 60 61 62 63 64 65 66/* 67================================================================================ 68Begin Namespace 69================================================================================ 70*/ 71namespace eddy { 72 namespace threads { 73 74 75 76 77 78/* 79================================================================================ 80Inline Mutators 81================================================================================ 82*/ 83 84 85 86 87 88 89 90 91/* 92================================================================================ 93Inline Accessors 94================================================================================ 95*/ 96 97 98 99 100 101 102 103 104/* 105================================================================================ 106Inline Public Methods 107================================================================================ 108*/ 109 110 111 112 113 114 115/* 116================================================================================ 117Inline Subclass Visible Methods 118================================================================================ 119*/ 120 121 122 123 124 125 126 127 128/* 129================================================================================ 130Inline Private Methods 131================================================================================ 132*/ 133 134inline 135void 136mutex_lock::lock( 137 ) 138{ 139 this->_mutex->lock(); 140 141} // mutex_lock::lock 142 143inline 144void 145mutex_lock::unlock( 146 ) 147{ 148 this->_mutex->unlock(); 149 150} // mutex_lock::unlock 151 152inline 153mutex& 154mutex_lock::get_mutex( 155 ) 156{ 157 return *(this->_mutex); 158 159} // mutex_lock::get_mutex 160 161 162 163 164 165/* 166================================================================================ 167Inline Structors 168================================================================================ 169*/ 170 171 172 173inline 174mutex_lock::mutex_lock( 175 mutex& mutex 176 ) : 177 _mutex(&mutex) 178{ 179 // lock the mutex and allow any errors to pass through. 180 this->lock(); 181 182} // mutex_lock::mutex_lock 183 184 185inline 186mutex_lock::~mutex_lock( 187 ) throw() 188{ 189 // try to unlock and don't allow any errors through. 190 try 191 { 192 this->unlock(); 193 } 194 catch(...){} 195 196} // mutex_lock::~mutex_lock 197 198 199 200 201 202/* 203================================================================================ 204End Namespace 205================================================================================ 206*/ 207 } // namespace threads 208} // namespace eddy 209 210