From f9ef7f91f4996ce5b7ee55bde03a0e68d292cbad Mon Sep 17 00:00:00 2001 From: hartmann Date: Mon, 9 Feb 2004 16:36:20 +0000 Subject: [PATCH] Needed for gcc on solaris. git-svn-id: https://svn.dealii.org/trunk@8434 0785d39b-7218-0410-832d-ea1e28bc413d --- .../include/boost/detail/lwm_pthreads.hpp | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 deal.II/contrib/boost/include/boost/detail/lwm_pthreads.hpp diff --git a/deal.II/contrib/boost/include/boost/detail/lwm_pthreads.hpp b/deal.II/contrib/boost/include/boost/detail/lwm_pthreads.hpp new file mode 100644 index 0000000000..8ee5550e2e --- /dev/null +++ b/deal.II/contrib/boost/include/boost/detail/lwm_pthreads.hpp @@ -0,0 +1,85 @@ +#ifndef BOOST_DETAIL_LWM_PTHREADS_HPP_INCLUDED +#define BOOST_DETAIL_LWM_PTHREADS_HPP_INCLUDED + +#if _MSC_VER >= 1020 +#pragma once +#endif + +// +// boost/detail/lwm_pthreads.hpp +// +// Copyright (c) 2002 Peter Dimov and Multi Media Ltd. +// +// Permission to copy, use, modify, sell and distribute this software +// is granted provided this copyright notice appears in all copies. +// This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. +// + +#include + +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_DETAIL_LWM_PTHREADS_HPP_INCLUDED -- 2.39.5