1 #ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_HPP_INCLUDED 2 #define BOOST_SMART_PTR_DETAIL_SPINLOCK_HPP_INCLUDED 3 4 // MS compatible compilers support #pragma once 5 6 #if defined(_MSC_VER) && (_MSC_VER >= 1020) 7 # pragma once 8 #endif 9 10 // 11 // boost/detail/spinlock.hpp 12 // 13 // Copyright (c) 2008 Peter Dimov 14 // 15 // Distributed under the Boost Software License, Version 1.0. 16 // See accompanying file LICENSE_1_0.txt or copy at 17 // http://www.boost.org/LICENSE_1_0.txt) 18 // 19 // struct spinlock 20 // { 21 // void lock(); 22 // bool try_lock(); 23 // void unlock(); 24 // 25 // class scoped_lock; 26 // }; 27 // 28 // #define BOOST_DETAIL_SPINLOCK_INIT <unspecified> 29 // 30 31 #include <boost/config.hpp> 32 #include <boost/smart_ptr/detail/sp_has_sync.hpp> 33 34 #if defined( BOOST_SP_USE_STD_ATOMIC ) 35 # if !defined( __clang__ ) 36 # include <boost/smart_ptr/detail/spinlock_std_atomic.hpp> 37 # else 38 // Clang (at least up to 3.4) can't compile spinlock_pool when 39 // using std::atomic, so substitute the __sync implementation instead. 40 # include <boost/smart_ptr/detail/spinlock_sync.hpp> 41 # endif 42 43 #elif defined( BOOST_SP_USE_PTHREADS ) 44 # include <boost/smart_ptr/detail/spinlock_pt.hpp> 45 46 #elif !defined( BOOST_NO_CXX11_HDR_ATOMIC ) 47 # include <boost/smart_ptr/detail/spinlock_std_atomic.hpp> 48 49 #elif defined(__GNUC__) && defined( __arm__ ) && !defined( __thumb__ ) 50 # include <boost/smart_ptr/detail/spinlock_gcc_arm.hpp> 51 52 #elif defined( BOOST_SP_HAS_SYNC ) 53 # include <boost/smart_ptr/detail/spinlock_sync.hpp> 54 55 #elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) 56 # include <boost/smart_ptr/detail/spinlock_w32.hpp> 57 58 #elif defined(BOOST_HAS_PTHREADS) 59 # include <boost/smart_ptr/detail/spinlock_pt.hpp> 60 61 #elif !defined(BOOST_HAS_THREADS) 62 # include <boost/smart_ptr/detail/spinlock_nt.hpp> 63 64 #else 65 # error Unrecognized threading platform 66 #endif 67 68 #endif // #ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_HPP_INCLUDED 69