Index: boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp =================================================================== --- boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp (revision 2) +++ boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp (working copy) @@ -23,6 +23,7 @@ #include #include #include +#include #endif /////////////////////////////////////////////////////////////////////////////// @@ -159,7 +160,7 @@ result(new definition_t(target_grammar->derived())); #ifdef BOOST_SPIRIT_THREADSAFE - boost::mutex::scoped_lock lock(helpers.mutex()); + boost::unique_lock lock(helpers.mutex()); #endif helpers.push_back(this); Index: boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp =================================================================== --- boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp (revision 2) +++ boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp (working copy) @@ -15,6 +15,7 @@ #ifdef BOOST_SPIRIT_THREADSAFE #include +#include #include #endif @@ -99,7 +100,7 @@ object_with_id_base_supply::acquire() { #ifdef BOOST_SPIRIT_THREADSAFE - boost::mutex::scoped_lock lock(mutex); + boost::unique_lock lock(mutex); #endif if (free_ids.size()) { @@ -121,7 +122,7 @@ object_with_id_base_supply::release(IdT id) { #ifdef BOOST_SPIRIT_THREADSAFE - boost::mutex::scoped_lock lock(mutex); + boost::unique_lock lock(mutex); #endif if (max_id == id) max_id--; @@ -139,7 +140,7 @@ static boost::once_flag been_here = BOOST_ONCE_INIT; boost::call_once(been_here, mutex_init); boost::mutex &mutex = mutex_instance(); - boost::mutex::scoped_lock lock(mutex); + boost::unique_lock lock(mutex); #endif static boost::shared_ptr > static_supply; Index: boost/spirit/home/classic/utility/scoped_lock.hpp =================================================================== --- boost/spirit/home/classic/utility/scoped_lock.hpp (revision 2) +++ boost/spirit/home/classic/utility/scoped_lock.hpp (working copy) @@ -10,6 +10,7 @@ /////////////////////////////////////////////////////////////////////////////// #include +#include #if !defined(BOOST_SPIRIT_COMPOSITE_HPP) #include #endif @@ -51,7 +52,7 @@ typename parser_result::type parse(ScannerT const &scan) const { - typedef typename mutex_t::scoped_lock scoped_lock_t; + typedef boost::unique_lock scoped_lock_t; scoped_lock_t lock(mutex); return this->subject().parse(scan); } Index: libs/spirit/classic/test/grammar_mt_tests.cpp =================================================================== --- libs/spirit/classic/test/grammar_mt_tests.cpp (revision 2) +++ libs/spirit/classic/test/grammar_mt_tests.cpp (working copy) @@ -35,6 +35,8 @@ #include #include #include +#include +#include #include static boost::mutex simple_mutex; @@ -48,7 +50,7 @@ definition(simple const& /*self*/) { top = BOOST_SPIRIT_CLASSIC_NS::epsilon_p; - boost::mutex::scoped_lock lock(simple_mutex); + boost::unique_lock lock(simple_mutex); simple_definition_count++; } Index: libs/spirit/classic/test/owi_mt_tests.cpp =================================================================== --- libs/spirit/classic/test/owi_mt_tests.cpp (revision 2) +++ libs/spirit/classic/test/owi_mt_tests.cpp (working copy) @@ -46,6 +46,8 @@ #include #include #include +#include +#include #include #include #include @@ -80,7 +82,7 @@ increase_test_size(unsigned long size) { static boost::mutex m; - boost::mutex::scoped_lock l(m); + boost::unique_lock l(m); if (size