diff options
| author | Remko Tronçon <git@el-tramo.be> | 2010-03-28 15:46:49 (GMT) | 
|---|---|---|
| committer | Remko Tronçon <git@el-tramo.be> | 2010-03-28 15:46:49 (GMT) | 
| commit | f53a1ef582494458301b97bf6e546be52d7ff7e8 (patch) | |
| tree | 7571b5cbcbd8a8f1dd1c966c9045b6cb69f0e295 /3rdParty/Boost/src/boost/smart_ptr/detail/lwm_pthreads.hpp | |
| parent | 638345680d72ca6acaf123f2c8c1c391f696e371 (diff) | |
| download | swift-f53a1ef582494458301b97bf6e546be52d7ff7e8.zip swift-f53a1ef582494458301b97bf6e546be52d7ff7e8.tar.bz2 | |
Moving submodule contents back.
Diffstat (limited to '3rdParty/Boost/src/boost/smart_ptr/detail/lwm_pthreads.hpp')
| -rw-r--r-- | 3rdParty/Boost/src/boost/smart_ptr/detail/lwm_pthreads.hpp | 86 | 
1 files changed, 86 insertions, 0 deletions
| diff --git a/3rdParty/Boost/src/boost/smart_ptr/detail/lwm_pthreads.hpp b/3rdParty/Boost/src/boost/smart_ptr/detail/lwm_pthreads.hpp new file mode 100644 index 0000000..fc20dbb --- /dev/null +++ b/3rdParty/Boost/src/boost/smart_ptr/detail/lwm_pthreads.hpp @@ -0,0 +1,86 @@ +#ifndef BOOST_SMART_PTR_DETAIL_LWM_PTHREADS_HPP_INCLUDED +#define BOOST_SMART_PTR_DETAIL_LWM_PTHREADS_HPP_INCLUDED + +// MS compatible compilers support #pragma once + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# pragma once +#endif + +// +//  boost/detail/lwm_pthreads.hpp +// +//  Copyright (c) 2002 Peter Dimov and Multi Media Ltd. +// +// 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> + +namespace boost +{ + +namespace detail +{ + +class lightweight_mutex +{ +private: + +    pthread_mutex_t m_; + +    lightweight_mutex(lightweight_mutex const &); +    lightweight_mutex & operator=(lightweight_mutex const &); + +public: + +    lightweight_mutex() +    { + +// HPUX 10.20 / DCE has a nonstandard pthread_mutex_init + +#if defined(__hpux) && defined(_DECTHREADS_) +        pthread_mutex_init(&m_, pthread_mutexattr_default); +#else +        pthread_mutex_init(&m_, 0); +#endif +    } + +    ~lightweight_mutex() +    { +        pthread_mutex_destroy(&m_); +    } + +    class scoped_lock; +    friend class scoped_lock; + +    class scoped_lock +    { +    private: + +        pthread_mutex_t & m_; + +        scoped_lock(scoped_lock const &); +        scoped_lock & operator=(scoped_lock const &); + +    public: + +        scoped_lock(lightweight_mutex & m): m_(m.m_) +        { +            pthread_mutex_lock(&m_); +        } + +        ~scoped_lock() +        { +            pthread_mutex_unlock(&m_); +        } +    }; +}; + +} // namespace detail + +} // namespace boost + +#endif // #ifndef BOOST_SMART_PTR_DETAIL_LWM_PTHREADS_HPP_INCLUDED | 
 Swift
 Swift