2 // spinlock_try_test.cpp
4 // Copyright 2008 Peter Dimov
6 // Distributed under the Boost Software License, Version 1.0.
7 // See accompanying file LICENSE_1_0.txt or copy at
8 // http://www.boost.org/LICENSE_1_0.txt)
11 #include <boost/smart_ptr/detail/spinlock.hpp>
12 #include <boost/detail/lightweight_test.hpp>
16 static boost::detail::spinlock sp
= BOOST_DETAIL_SPINLOCK_INIT
;
17 static boost::detail::spinlock sp2
= BOOST_DETAIL_SPINLOCK_INIT
;
21 BOOST_TEST( sp
.try_lock() );
22 BOOST_TEST( !sp
.try_lock() );
23 BOOST_TEST( sp2
.try_lock() );
24 BOOST_TEST( !sp
.try_lock() );
25 BOOST_TEST( !sp2
.try_lock() );
30 BOOST_TEST( !sp
.try_lock() );
32 BOOST_TEST( !sp
.try_lock() );
33 BOOST_TEST( !sp2
.try_lock() );
38 boost::detail::spinlock::scoped_lock
lock( sp
);
39 BOOST_TEST( !sp
.try_lock() );
40 boost::detail::spinlock::scoped_lock
lock2( sp2
);
41 BOOST_TEST( !sp
.try_lock() );
42 BOOST_TEST( !sp2
.try_lock() );
45 return boost::report_errors();