//
#include <boost/smart_ptr/detail/yield_k.hpp>
+#include <boost/config.hpp>
#include <atomic>
namespace boost
public:
- bool try_lock()
+ bool try_lock() BOOST_NOEXCEPT
{
return !v_.test_and_set( std::memory_order_acquire );
}
- void lock()
+ void lock() BOOST_NOEXCEPT
{
for( unsigned k = 0; !try_lock(); ++k )
{
}
}
- void unlock()
+ void unlock() BOOST_NOEXCEPT
{
v_ .clear( std::memory_order_release );
}
public:
- explicit scoped_lock( spinlock & sp ): sp_( sp )
+ explicit scoped_lock( spinlock & sp ) BOOST_NOEXCEPT: sp_( sp )
{
sp.lock();
}
- ~scoped_lock()
+ ~scoped_lock() /*BOOST_NOEXCEPT*/
{
sp_.unlock();
}