File indexing completed on 2026-01-06 10:03:16
0001 #ifndef BOOST_SYSTEM_DETAIL_MUTEX_HPP_INCLUDED
0002 #define BOOST_SYSTEM_DETAIL_MUTEX_HPP_INCLUDED
0003
0004
0005
0006
0007
0008 #include <boost/config.hpp>
0009
0010 #if defined(BOOST_SYSTEM_DISABLE_THREADS)
0011
0012 namespace boost
0013 {
0014 namespace system
0015 {
0016 namespace detail
0017 {
0018
0019 struct mutex
0020 {
0021 void lock()
0022 {
0023 }
0024
0025 void unlock()
0026 {
0027 }
0028 };
0029
0030 }
0031 }
0032 }
0033
0034 #else
0035
0036 #if defined(BOOST_MSSTL_VERSION) && BOOST_MSSTL_VERSION >= 140
0037
0038
0039
0040
0041
0042
0043 #include <boost/winapi/config.hpp>
0044
0045
0046 #if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
0047
0048 #include <shared_mutex>
0049
0050 #if BOOST_MSSTL_VERSION >= 142 || _HAS_SHARED_MUTEX
0051 # define BOOST_SYSTEM_HAS_MSSTL_SHARED_MUTEX
0052 #endif
0053
0054 #endif
0055
0056 #endif
0057
0058 #if defined(BOOST_SYSTEM_HAS_MSSTL_SHARED_MUTEX)
0059
0060 namespace boost
0061 {
0062 namespace system
0063 {
0064 namespace detail
0065 {
0066
0067 typedef std::shared_mutex mutex;
0068
0069 }
0070 }
0071 }
0072
0073 #else
0074
0075 #include <mutex>
0076
0077 namespace boost
0078 {
0079 namespace system
0080 {
0081 namespace detail
0082 {
0083
0084 using std::mutex;
0085
0086 }
0087 }
0088 }
0089
0090 #endif
0091 #endif
0092
0093 namespace boost
0094 {
0095 namespace system
0096 {
0097 namespace detail
0098 {
0099
0100 template<class Mtx> class lock_guard
0101 {
0102 private:
0103
0104 Mtx& mtx_;
0105
0106 private:
0107
0108 lock_guard( lock_guard const& );
0109 lock_guard& operator=( lock_guard const& );
0110
0111 public:
0112
0113 explicit lock_guard( Mtx& mtx ): mtx_( mtx )
0114 {
0115 mtx_.lock();
0116 }
0117
0118 ~lock_guard()
0119 {
0120 mtx_.unlock();
0121 }
0122 };
0123
0124 }
0125 }
0126 }
0127
0128 #endif