From dcdbaf1e570032104cc2e87eacb00391a061e408 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Wed, 2 Jul 2003 11:54:40 +0000 Subject: [PATCH] A binary compatible 'null' lightweight_mutex for Win32 added. [SVN r18916] --- include/boost/detail/lightweight_mutex.hpp | 16 ++++-- include/boost/detail/lwm_win32_nt.hpp | 64 ++++++++++++++++++++++ include/boost/detail/shared_count.hpp | 2 +- 3 files changed, 77 insertions(+), 5 deletions(-) create mode 100644 include/boost/detail/lwm_win32_nt.hpp diff --git a/include/boost/detail/lightweight_mutex.hpp b/include/boost/detail/lightweight_mutex.hpp index 91a338a..961227e 100644 --- a/include/boost/detail/lightweight_mutex.hpp +++ b/include/boost/detail/lightweight_mutex.hpp @@ -8,7 +8,7 @@ // // boost/detail/lightweight_mutex.hpp - lightweight mutex // -// Copyright (c) 2002 Peter Dimov and Multi Media Ltd. +// Copyright (c) 2002, 2003 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. @@ -64,15 +64,23 @@ // shared_ptr_timing_test.cpp will compile succesfully with a stub do-nothing // pthreads library, since it doesn't create any threads. -#ifndef BOOST_HAS_THREADS -# include +#if (defined(WIN32) || defined(_WIN32) || defined(__WIN32__)) && !defined(BOOST_LWM_USE_CRITICAL_SECTION) && !defined(BOOST_LWM_USE_PTHREADS) +# define BOOST_LWM_WIN32 +#endif + +#if !defined(BOOST_HAS_THREADS) +# if defined(BOOST_LWM_WIN32) +# include +# else +# include +# endif #elif defined(BOOST_LWM_USE_SPINLOCK) && defined(BOOST_USE_ASM_ATOMIC_H) # include #elif defined(BOOST_LWM_USE_CRITICAL_SECTION) # include #elif defined(BOOST_LWM_USE_PTHREADS) # include -#elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) +#elif defined(BOOST_LWM_WIN32) # include #elif defined(BOOST_LWM_USE_SPINLOCK) && defined(__sgi) # include diff --git a/include/boost/detail/lwm_win32_nt.hpp b/include/boost/detail/lwm_win32_nt.hpp new file mode 100644 index 0000000..39e49e2 --- /dev/null +++ b/include/boost/detail/lwm_win32_nt.hpp @@ -0,0 +1,64 @@ +#ifndef BOOST_DETAIL_LWM_WIN32_NT_HPP_INCLUDED +#define BOOST_DETAIL_LWM_WIN32_NT_HPP_INCLUDED + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# pragma once +#endif + +// +// boost/detail/lwm_win32_nt.hpp +// +// Copyright (c) 2002, 2003 Peter Dimov +// +// 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. +// +// "No threads" version of lwm_win32.hpp; binary compatible but no-op. +// + +namespace boost +{ + +namespace detail +{ + +class lightweight_mutex +{ +private: + + long l_; + + lightweight_mutex(lightweight_mutex const &); + lightweight_mutex & operator=(lightweight_mutex const &); + +public: + + lightweight_mutex(): l_(0) + { + } + + class scoped_lock; + friend class scoped_lock; + + class scoped_lock + { + private: + + scoped_lock(scoped_lock const &); + scoped_lock & operator=(scoped_lock const &); + + public: + + explicit scoped_lock(lightweight_mutex &) + { + } + }; +}; + +} // namespace detail + +} // namespace boost + +#endif // #ifndef BOOST_DETAIL_LWM_WIN32_NT_HPP_INCLUDED diff --git a/include/boost/detail/shared_count.hpp b/include/boost/detail/shared_count.hpp index 3ade9f9..19e6ff2 100644 --- a/include/boost/detail/shared_count.hpp +++ b/include/boost/detail/shared_count.hpp @@ -187,7 +187,7 @@ private: long use_count_; long weak_count_; -#if defined(BOOST_HAS_THREADS) +#if defined(BOOST_HAS_THREADS) || defined(BOOST_LWM_WIN32) mutable mutex_type mtx_; #endif };