1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- #ifndef BOOST_SMART_PTR_DETAIL_LWM_STD_MUTEX_HPP_INCLUDED
- #define BOOST_SMART_PTR_DETAIL_LWM_STD_MUTEX_HPP_INCLUDED
- #include <boost/assert.hpp>
- #include <mutex>
- namespace boost
- {
- namespace detail
- {
- class lightweight_mutex
- {
- private:
- std::mutex m_;
- lightweight_mutex(lightweight_mutex const &);
- lightweight_mutex & operator=(lightweight_mutex const &);
- public:
- lightweight_mutex()
- {
- }
- class scoped_lock;
- friend class scoped_lock;
- class scoped_lock
- {
- private:
- std::mutex & m_;
- scoped_lock(scoped_lock const &);
- scoped_lock & operator=(scoped_lock const &);
- public:
- scoped_lock( lightweight_mutex & m ): m_( m.m_ )
- {
- m_.lock();
- }
- ~scoped_lock()
- {
- m_.unlock();
- }
- };
- };
- }
- }
- #endif
|