From e04637edaf8adcac9bcccc9e806706aba48db369 Mon Sep 17 00:00:00 2001 From: Oliver Kowalke Date: Mon, 7 Jan 2013 17:25:03 +0100 Subject: [PATCH] some mods --- include/boost/fiber/mutex.hpp | 4 +- src/auto_reset_event.cpp | 15 +++--- src/condition.cpp | 2 +- src/detail/fiber_base.cpp | 2 - src/fiber.cpp | 4 +- src/manual_reset_event.cpp | 2 +- src/mutex.cpp | 14 +---- src/round_robin.cpp | 3 +- test/Jamfile.v2 | 10 ++-- test/test_auto_reset_event.cpp | 27 +++++++--- test/test_barrier.cpp | 58 +------------------- test/test_generic_locks.cpp | 90 ++++++++++++++++++++++++------- test/test_lock.cpp | 99 ++++++++++++++++++++++++++-------- test/test_unique_lock.cpp | 99 ++++++++++++++++++++++++++-------- 14 files changed, 268 insertions(+), 161 deletions(-) diff --git a/include/boost/fiber/mutex.hpp b/include/boost/fiber/mutex.hpp index 6a4c2714..a2dfab89 100644 --- a/include/boost/fiber/mutex.hpp +++ b/include/boost/fiber/mutex.hpp @@ -42,17 +42,15 @@ private: }; atomic< state > state_; - detail::fiber_base::id owner_; detail::spin_mutex mtx_; std::deque< detail::fiber_base::ptr_t > waiting_; - bool checked_; public: typedef unique_lock< mutex > scoped_lock; - mutex( bool = true); + mutex(); void lock(); diff --git a/src/auto_reset_event.cpp b/src/auto_reset_event.cpp index e92ef45a..1ffcd90d 100644 --- a/src/auto_reset_event.cpp +++ b/src/auto_reset_event.cpp @@ -44,6 +44,8 @@ auto_reset_event::wait() bool auto_reset_event::timed_wait( chrono::system_clock::time_point const& abs_time) { + BOOST_ASSERT_MSG( false, "not implemented"); + BOOST_ASSERT( this_fiber::is_fiberized() ); if ( chrono::system_clock::now() >= abs_time) return false; @@ -77,15 +79,12 @@ auto_reset_event::set() state_ = SET; detail::spin_mutex::scoped_lock lk( waiting_mtx_); - if ( ! waiting_.empty() ) + detail::fiber_base::ptr_t f; + do { - detail::fiber_base::ptr_t f; - do - { - f.swap( waiting_.front() ); - waiting_.pop_front(); - } while ( ! f->is_ready() ); - } + f.swap( waiting_.front() ); + waiting_.pop_front(); + } while ( ! f->is_ready() ); } }} diff --git a/src/condition.cpp b/src/condition.cpp index 1c9a0b9b..8c9c2596 100644 --- a/src/condition.cpp +++ b/src/condition.cpp @@ -22,7 +22,7 @@ namespace fibers { condition::condition() : cmd_( SLEEPING), waiters_( 0), - enter_mtx_( false), + enter_mtx_(), check_mtx_(), waiting_mtx_(), waiting_() diff --git a/src/detail/fiber_base.cpp b/src/detail/fiber_base.cpp index 1117b751..f0ffa491 100644 --- a/src/detail/fiber_base.cpp +++ b/src/detail/fiber_base.cpp @@ -83,8 +83,6 @@ fiber_base::terminate() void fiber_base::join( ptr_t const& p) { - BOOST_ASSERT( p->is_running() ); - // protect against concurrent access to joining_ spin_mutex::scoped_lock lk( mtx_); if ( is_terminated() ) return; diff --git a/src/fiber.cpp b/src/fiber.cpp index c9837e49..6d9a04b0 100644 --- a/src/fiber.cpp +++ b/src/fiber.cpp @@ -47,7 +47,7 @@ void fiber::join() { BOOST_ASSERT( impl_); - +#if 0 if ( boost::this_fiber::is_fiberized() && boost::this_fiber::get_id() == get_id() ) boost::throw_exception( fiber_resource_error( @@ -57,7 +57,7 @@ fiber::join() boost::throw_exception( fiber_resource_error( system::errc::invalid_argument, "boost fiber: fiber not joinable") ); - +#endif detail::scheduler::instance().join( impl_); BOOST_ASSERT( impl_->is_terminated() ); diff --git a/src/manual_reset_event.cpp b/src/manual_reset_event.cpp index 1c1ee3d2..ccedc267 100644 --- a/src/manual_reset_event.cpp +++ b/src/manual_reset_event.cpp @@ -24,7 +24,7 @@ namespace fibers { manual_reset_event::manual_reset_event( bool isset) : state_( isset ? SET : RESET), waiters_( 0), - enter_mtx_( false), + enter_mtx_(), waiting_mtx_(), waiting_() {} diff --git a/src/mutex.cpp b/src/mutex.cpp index adf31500..3acb1c9b 100644 --- a/src/mutex.cpp +++ b/src/mutex.cpp @@ -20,12 +20,10 @@ namespace boost { namespace fibers { -mutex::mutex( bool checked) : +mutex::mutex() : state_( UNLOCKED), - owner_(), mtx_(), - waiting_(), - checked_( checked) + waiting_() {} void @@ -40,7 +38,6 @@ mutex::lock() detail::scheduler::instance().active() ); detail::scheduler::instance().wait( lk); } - owner_ = detail::scheduler::instance().active()->get_id(); } bool @@ -56,13 +53,6 @@ mutex::unlock() { BOOST_ASSERT( this_fiber::is_fiberized() ); - if ( checked_) - { - if ( detail::scheduler::instance().active()->get_id() != owner_) - std::abort(); - } - owner_ = detail::fiber_base::id(); - state_ = UNLOCKED; detail::spin_mutex::scoped_lock lk( mtx_); diff --git a/src/round_robin.cpp b/src/round_robin.cpp index c2ae7afc..d3971ff2 100644 --- a/src/round_robin.cpp +++ b/src/round_robin.cpp @@ -72,9 +72,10 @@ void round_robin::join( detail::fiber_base::ptr_t const& f) { BOOST_ASSERT( f); - BOOST_ASSERT( ! f->is_terminated() ); BOOST_ASSERT( f != active_fiber_); + if ( f->is_terminated() ) return; + if ( active_fiber_) { // add active_fiber_ to joinig-list of f diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 00a6daf6..37c246aa 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -27,13 +27,13 @@ test-suite fibers : ## [ fiber-test test_waitfor ] [ fiber-test test_mutex ] [ fiber-test test_condition ] -# [ fiber-test test_generic_locks ] -# [ fiber-test test_unique_lock ] -# [ fiber-test test_lock ] -# [ fiber-test test_barrier ] + [ fiber-test test_generic_locks ] + [ fiber-test test_unique_lock ] + [ fiber-test test_lock ] + [ fiber-test test_barrier ] # [ fiber-test test_auto_reset_event ] # [ fiber-test test_manual_reset_event ] # [ fiber-test test_count_down_event ] -# [ fiber-test test_futures ] + [ fiber-test test_futures ] # [ fiber-test test_then ] ; diff --git a/test/test_auto_reset_event.cpp b/test/test_auto_reset_event.cpp index b4828cff..d7e28d54 100644 --- a/test/test_auto_reset_event.cpp +++ b/test/test_auto_reset_event.cpp @@ -110,13 +110,30 @@ void fn3() BOOST_CHECK_EQUAL( false, ev.try_wait() ); } +void do_wait_set() +{ + boost::fibers::fiber( fn1).join(); + fn1(); +} + +void do_wait_reset() +{ + boost::fibers::fiber( fn2).join(); + fn2(); +} + +void do_try_wait() +{ + boost::fibers::fiber( fn3).join(); + fn3(); +} + void test_wait_set() { boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( fn1).join(); - fn1(); + boost::fibers::fiber( do_wait_set).join(); } void test_wait_reset() @@ -124,8 +141,7 @@ void test_wait_reset() boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( fn2).join(); - fn2(); + boost::fibers::fiber( do_wait_reset).join(); } void test_try_wait() @@ -133,8 +149,7 @@ void test_try_wait() boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( fn3).join(); - fn3(); + boost::fibers::fiber( do_try_wait).join(); } boost::unit_test::test_suite * init_unit_test_suite( int, char* []) diff --git a/test/test_barrier.cpp b/test/test_barrier.cpp index 1e49f6dc..d1a2d859 100644 --- a/test/test_barrier.cpp +++ b/test/test_barrier.cpp @@ -68,63 +68,9 @@ void test_barrier() BOOST_CHECK( s2); BOOST_CHECK_EQUAL( 1, value2); - BOOST_CHECK( boost::fibers::run() ); - BOOST_CHECK( s1); - BOOST_CHECK( s2); - BOOST_CHECK_EQUAL( 1, value1); - BOOST_CHECK_EQUAL( 1, value2); + if ( s1.joinable() ) s1.join(); + if ( s2.joinable() ) s2.join(); - BOOST_CHECK( boost::fibers::run() ); - BOOST_CHECK( s1); - BOOST_CHECK( s2); - BOOST_CHECK_EQUAL( 1, value1); - BOOST_CHECK_EQUAL( 2, value2); - - BOOST_CHECK( boost::fibers::run() ); - BOOST_CHECK( s1); - BOOST_CHECK( s2); - BOOST_CHECK_EQUAL( 1, value1); - BOOST_CHECK_EQUAL( 3, value2); - - BOOST_CHECK( boost::fibers::run() ); - BOOST_CHECK( s1); - BOOST_CHECK( s2); - BOOST_CHECK_EQUAL( 1, value1); - BOOST_CHECK_EQUAL( 4, value2); - - BOOST_CHECK( boost::fibers::run() ); - BOOST_CHECK( s1); - BOOST_CHECK( s2); - BOOST_CHECK_EQUAL( 2, value1); - BOOST_CHECK_EQUAL( 4, value2); - - BOOST_CHECK( boost::fibers::run() ); - BOOST_CHECK( s1); - BOOST_CHECK( ! s2); - BOOST_CHECK_EQUAL( 2, value1); - BOOST_CHECK_EQUAL( 5, value2); - - BOOST_CHECK( boost::fibers::run() ); - BOOST_CHECK( s1); - BOOST_CHECK( ! s2); - BOOST_CHECK_EQUAL( 3, value1); - BOOST_CHECK_EQUAL( 5, value2); - - BOOST_CHECK( boost::fibers::run() ); - BOOST_CHECK( s1); - BOOST_CHECK( ! s2); - BOOST_CHECK_EQUAL( 4, value1); - BOOST_CHECK_EQUAL( 5, value2); - - BOOST_CHECK( boost::fibers::run() ); - BOOST_CHECK( ! s1); - BOOST_CHECK( ! s2); - BOOST_CHECK_EQUAL( 5, value1); - BOOST_CHECK_EQUAL( 5, value2); - - BOOST_CHECK( ! boost::fibers::run() ); - BOOST_CHECK( ! s1); - BOOST_CHECK( ! s2); BOOST_CHECK_EQUAL( 5, value1); BOOST_CHECK_EQUAL( 5, value2); } diff --git a/test/test_generic_locks.cpp b/test/test_generic_locks.cpp index c33e726c..54a2ae9d 100644 --- a/test/test_generic_locks.cpp +++ b/test/test_generic_locks.cpp @@ -355,13 +355,72 @@ void try_lock_five() } } +void do_lock_two_uncontended() +{ + boost::fibers::fiber( lock_two_uncontended).join(); + lock_two_uncontended(); +} + +void do_lock_five_uncontended() +{ + boost::fibers::fiber( lock_five_uncontended).join(); + lock_five_uncontended(); +} + +void do_lock_five_in_range() +{ + boost::fibers::fiber( lock_five_in_range).join(); + lock_five_in_range(); +} + +void do_lock_ten_in_range() +{ + boost::fibers::fiber( lock_ten_in_range).join(); + lock_ten_in_range(); +} + +void do_try_lock_two_uncontended() +{ + boost::fibers::fiber( try_lock_two_uncontended).join(); + try_lock_two_uncontended(); +} + +void do_try_lock_two_first_locked() +{ + boost::fibers::fiber( try_lock_two_first_locked).join(); + try_lock_two_first_locked(); +} + +void do_try_lock_two_second_locked() +{ + boost::fibers::fiber( try_lock_two_second_locked).join(); + try_lock_two_second_locked(); +} + +void do_try_lock_three() +{ + boost::fibers::fiber( try_lock_three).join(); + try_lock_three(); +} + +void do_try_lock_four() +{ + boost::fibers::fiber( try_lock_four).join(); + try_lock_four(); +} + +void do_try_lock_five() +{ + boost::fibers::fiber( try_lock_five).join(); + try_lock_five(); +} + void test_lock_two_uncontended() { boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( lock_two_uncontended).join(); - lock_two_uncontended(); + boost::fibers::fiber( do_lock_two_uncontended).join(); } void test_lock_five_uncontended() @@ -369,8 +428,7 @@ void test_lock_five_uncontended() boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( lock_five_uncontended).join(); - lock_five_uncontended(); + boost::fibers::fiber( do_lock_five_uncontended).join(); } void test_lock_five_in_range() @@ -378,8 +436,7 @@ void test_lock_five_in_range() boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( lock_five_in_range).join(); - lock_five_in_range(); + boost::fibers::fiber( do_lock_five_in_range).join(); } void test_lock_ten_in_range() @@ -387,8 +444,7 @@ void test_lock_ten_in_range() boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( lock_ten_in_range).join(); - lock_ten_in_range(); + boost::fibers::fiber( do_lock_ten_in_range).join(); } void test_try_lock_two_uncontended() @@ -396,8 +452,7 @@ void test_try_lock_two_uncontended() boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( try_lock_two_uncontended).join(); - try_lock_two_uncontended(); + boost::fibers::fiber( do_try_lock_two_uncontended).join(); } void test_try_lock_two_first_locked() @@ -405,8 +460,7 @@ void test_try_lock_two_first_locked() boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( try_lock_two_first_locked).join(); - try_lock_two_first_locked(); + boost::fibers::fiber( do_try_lock_two_first_locked).join(); } void test_try_lock_two_second_locked() @@ -414,8 +468,7 @@ void test_try_lock_two_second_locked() boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( try_lock_two_second_locked).join(); - try_lock_two_second_locked(); + boost::fibers::fiber( do_try_lock_two_second_locked).join(); } void test_try_lock_three() @@ -423,8 +476,7 @@ void test_try_lock_three() boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( try_lock_three).join(); - try_lock_three(); + boost::fibers::fiber( do_try_lock_three).join(); } void test_try_lock_four() @@ -432,8 +484,7 @@ void test_try_lock_four() boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( try_lock_four).join(); - try_lock_four(); + boost::fibers::fiber( do_try_lock_four).join(); } void test_try_lock_five() @@ -441,8 +492,7 @@ void test_try_lock_five() boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( try_lock_five).join(); - try_lock_five(); + boost::fibers::fiber( do_try_lock_five).join(); } boost::unit_test_framework::test_suite* init_unit_test_suite(int, char*[]) diff --git a/test/test_lock.cpp b/test/test_lock.cpp index efbc0b0d..971fb9a6 100644 --- a/test/test_lock.cpp +++ b/test/test_lock.cpp @@ -179,13 +179,78 @@ void swap() BOOST_CHECK_EQUAL( lk2.mutex(), & mtx1); } +void do_lock() +{ + boost::fibers::fiber( lock).join(); + //lock(); +} + +void do_defer_lock() +{ + boost::fibers::fiber( defer_lock).join(); + defer_lock(); +} + +void do_adopt_lock() +{ + boost::fibers::fiber( adopt_lock).join(); + adopt_lock(); +} + +void do_try_lock() +{ + boost::fibers::fiber( try_lock).join(); + try_lock(); +} + +void do_lock_twice() +{ + boost::fibers::fiber( lock_twice).join(); + lock_twice(); +} + +void do_try_lock_twice() +{ + boost::fibers::fiber( try_lock_twice).join(); + try_lock_twice(); +} + +void do_unlock_twice() +{ + boost::fibers::fiber( unlock_twice).join(); + unlock_twice(); +} + +void do_default_ctor() +{ + boost::fibers::fiber( default_ctor).join(); + default_ctor(); +} + +void do_lock_concept() +{ + boost::fibers::fiber( lock_concept).join(); + lock_concept(); +} + +void do_try_lock_concept() +{ + boost::fibers::fiber( try_lock_concept).join(); + try_lock_concept(); +} + +void do_swap() +{ + boost::fibers::fiber( swap).join(); + swap(); +} + void test_lock() { boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( lock).join(); - lock(); + boost::fibers::fiber( do_lock).join(); } void test_defer_lock() @@ -193,8 +258,7 @@ void test_defer_lock() boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( defer_lock).join(); - defer_lock(); + boost::fibers::fiber( do_defer_lock).join(); } void test_adopt_lock() @@ -202,8 +266,7 @@ void test_adopt_lock() boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( adopt_lock).join(); - adopt_lock(); + boost::fibers::fiber( do_adopt_lock).join(); } void test_try_lock() @@ -211,8 +274,7 @@ void test_try_lock() boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( try_lock).join(); - try_lock(); + boost::fibers::fiber( do_try_lock).join(); } void test_lock_twice() @@ -220,8 +282,7 @@ void test_lock_twice() boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( lock_twice).join(); - lock_twice(); + boost::fibers::fiber( do_lock_twice).join(); } void test_try_lock_twice() @@ -229,8 +290,7 @@ void test_try_lock_twice() boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( try_lock_twice).join(); - try_lock_twice(); + boost::fibers::fiber( do_try_lock_twice).join(); } void test_unlock_twice() @@ -238,8 +298,7 @@ void test_unlock_twice() boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( unlock_twice).join(); - unlock_twice(); + boost::fibers::fiber( do_unlock_twice).join(); } void test_default_ctor() @@ -247,8 +306,7 @@ void test_default_ctor() boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( default_ctor).join(); - default_ctor(); + boost::fibers::fiber( do_default_ctor).join(); } void test_lock_concept() @@ -256,8 +314,7 @@ void test_lock_concept() boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( lock_concept).join(); - lock_concept(); + boost::fibers::fiber( do_lock_concept).join(); } void test_try_lock_concept() @@ -265,8 +322,7 @@ void test_try_lock_concept() boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( try_lock_concept).join(); - try_lock_concept(); + boost::fibers::fiber( do_try_lock_concept).join(); } void test_swap() @@ -274,8 +330,7 @@ void test_swap() boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( swap).join(); - swap(); + boost::fibers::fiber( do_swap).join(); } boost::unit_test::test_suite * init_unit_test_suite( int, char* []) diff --git a/test/test_unique_lock.cpp b/test/test_unique_lock.cpp index 8b3d6d1b..9bdf6276 100644 --- a/test/test_unique_lock.cpp +++ b/test/test_unique_lock.cpp @@ -179,13 +179,78 @@ void swap() BOOST_CHECK_EQUAL( lk2.mutex(), & mtx1); } +void do_lock() +{ + boost::fibers::fiber( lock).join(); + lock(); +} + +void do_defer_lock() +{ + boost::fibers::fiber( defer_lock).join(); + defer_lock(); +} + +void do_adopt_lock() +{ + boost::fibers::fiber( adopt_lock).join(); + adopt_lock(); +} + +void do_try_lock() +{ + boost::fibers::fiber( try_lock).join(); + try_lock(); +} + +void do_lock_twice() +{ + boost::fibers::fiber( lock_twice).join(); + lock_twice(); +} + +void do_try_lock_twice() +{ + boost::fibers::fiber( try_lock_twice).join(); + try_lock_twice(); +} + +void do_unlock_twice() +{ + boost::fibers::fiber( unlock_twice).join(); + unlock_twice(); +} + +void do_default_ctor() +{ + boost::fibers::fiber( default_ctor).join(); + default_ctor(); +} + +void do_lock_concept() +{ + boost::fibers::fiber( lock_concept).join(); + lock_concept(); +} + +void do_try_lock_concept() +{ + boost::fibers::fiber( try_lock_concept).join(); + try_lock_concept(); +} + +void do_swap() +{ + boost::fibers::fiber( swap).join(); + swap(); +} + void test_lock() { boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( lock).join(); - lock(); + boost::fibers::fiber( do_lock).join(); } void test_defer_lock() @@ -193,8 +258,7 @@ void test_defer_lock() boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( defer_lock).join(); - defer_lock(); + boost::fibers::fiber( do_defer_lock).join(); } void test_adopt_lock() @@ -202,8 +266,7 @@ void test_adopt_lock() boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( adopt_lock).join(); - adopt_lock(); + boost::fibers::fiber( do_adopt_lock).join(); } void test_try_lock() @@ -211,8 +274,7 @@ void test_try_lock() boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( try_lock).join(); - try_lock(); + boost::fibers::fiber( do_try_lock).join(); } void test_lock_twice() @@ -220,8 +282,7 @@ void test_lock_twice() boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( lock_twice).join(); - lock_twice(); + boost::fibers::fiber( do_lock_twice).join(); } void test_try_lock_twice() @@ -229,8 +290,7 @@ void test_try_lock_twice() boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( try_lock_twice).join(); - try_lock_twice(); + boost::fibers::fiber( do_try_lock_twice).join(); } void test_unlock_twice() @@ -238,8 +298,7 @@ void test_unlock_twice() boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( unlock_twice).join(); - unlock_twice(); + boost::fibers::fiber( do_unlock_twice).join(); } void test_default_ctor() @@ -247,8 +306,7 @@ void test_default_ctor() boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( default_ctor).join(); - default_ctor(); + boost::fibers::fiber( do_default_ctor).join(); } void test_lock_concept() @@ -256,8 +314,7 @@ void test_lock_concept() boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( lock_concept).join(); - lock_concept(); + boost::fibers::fiber( do_lock_concept).join(); } void test_try_lock_concept() @@ -265,8 +322,7 @@ void test_try_lock_concept() boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( try_lock_concept).join(); - try_lock_concept(); + boost::fibers::fiber( do_try_lock_concept).join(); } void test_swap() @@ -274,8 +330,7 @@ void test_swap() boost::fibers::round_robin ds; boost::fibers::scheduling_algorithm( & ds); - boost::fibers::fiber( swap).join(); - swap(); + boost::fibers::fiber( do_swap).join(); } boost::unit_test::test_suite * init_unit_test_suite( int, char* [])