forked from boostorg/smart_ptr
A binary compatible 'null' lightweight_mutex for Win32 added.
[SVN r18916]
This commit is contained in:
@ -8,7 +8,7 @@
|
|||||||
//
|
//
|
||||||
// boost/detail/lightweight_mutex.hpp - lightweight mutex
|
// 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
|
// Permission to copy, use, modify, sell and distribute this software
|
||||||
// is granted provided this copyright notice appears in all copies.
|
// 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
|
// shared_ptr_timing_test.cpp will compile succesfully with a stub do-nothing
|
||||||
// pthreads library, since it doesn't create any threads.
|
// pthreads library, since it doesn't create any threads.
|
||||||
|
|
||||||
#ifndef BOOST_HAS_THREADS
|
#if (defined(WIN32) || defined(_WIN32) || defined(__WIN32__)) && !defined(BOOST_LWM_USE_CRITICAL_SECTION) && !defined(BOOST_LWM_USE_PTHREADS)
|
||||||
# include <boost/detail/lwm_nop.hpp>
|
# define BOOST_LWM_WIN32
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(BOOST_HAS_THREADS)
|
||||||
|
# if defined(BOOST_LWM_WIN32)
|
||||||
|
# include <boost/detail/lwm_win32_nt.hpp>
|
||||||
|
# else
|
||||||
|
# include <boost/detail/lwm_nop.hpp>
|
||||||
|
# endif
|
||||||
#elif defined(BOOST_LWM_USE_SPINLOCK) && defined(BOOST_USE_ASM_ATOMIC_H)
|
#elif defined(BOOST_LWM_USE_SPINLOCK) && defined(BOOST_USE_ASM_ATOMIC_H)
|
||||||
# include <boost/detail/lwm_linux.hpp>
|
# include <boost/detail/lwm_linux.hpp>
|
||||||
#elif defined(BOOST_LWM_USE_CRITICAL_SECTION)
|
#elif defined(BOOST_LWM_USE_CRITICAL_SECTION)
|
||||||
# include <boost/detail/lwm_win32_cs.hpp>
|
# include <boost/detail/lwm_win32_cs.hpp>
|
||||||
#elif defined(BOOST_LWM_USE_PTHREADS)
|
#elif defined(BOOST_LWM_USE_PTHREADS)
|
||||||
# include <boost/detail/lwm_pthreads.hpp>
|
# include <boost/detail/lwm_pthreads.hpp>
|
||||||
#elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
|
#elif defined(BOOST_LWM_WIN32)
|
||||||
# include <boost/detail/lwm_win32.hpp>
|
# include <boost/detail/lwm_win32.hpp>
|
||||||
#elif defined(BOOST_LWM_USE_SPINLOCK) && defined(__sgi)
|
#elif defined(BOOST_LWM_USE_SPINLOCK) && defined(__sgi)
|
||||||
# include <boost/detail/lwm_irix.hpp>
|
# include <boost/detail/lwm_irix.hpp>
|
||||||
|
64
include/boost/detail/lwm_win32_nt.hpp
Normal file
64
include/boost/detail/lwm_win32_nt.hpp
Normal file
@ -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
|
@ -187,7 +187,7 @@ private:
|
|||||||
long use_count_;
|
long use_count_;
|
||||||
long weak_count_;
|
long weak_count_;
|
||||||
|
|
||||||
#if defined(BOOST_HAS_THREADS)
|
#if defined(BOOST_HAS_THREADS) || defined(BOOST_LWM_WIN32)
|
||||||
mutable mutex_type mtx_;
|
mutable mutex_type mtx_;
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user