diff --git a/include/stlab/test/model.hpp b/include/stlab/test/model.hpp index 38960ac0..3ddc6e7d 100644 --- a/include/stlab/test/model.hpp +++ b/include/stlab/test/model.hpp @@ -18,6 +18,8 @@ #include #include +#include + /**************************************************************************************************/ namespace stlab { @@ -42,8 +44,7 @@ struct annotate_counters { void wait(std::size_t count) { std::unique_lock lock(_mutex); - while (count != remaining()) - _condition.wait(lock); + stlab::invoke_waiting([&] { _condition.wait(lock, [&] { return count == remaining(); }); }); } friend inline auto operator<<(std::ostream& out, const annotate_counters& x) -> std::ostream& { diff --git a/test/executor_test.cpp b/test/executor_test.cpp index 90030666..a663a8dd 100644 --- a/test/executor_test.cpp +++ b/test/executor_test.cpp @@ -5,6 +5,7 @@ */ /**************************************************************************************************/ +#include #include #include @@ -106,7 +107,7 @@ BOOST_AUTO_TEST_CASE(all_high_prio_tasks_get_executed) { BOOST_AUTO_TEST_CASE(task_system_restarts_after_it_went_pending) { BOOST_TEST_MESSAGE("The task system restarts after it went to pending"); - atomic_bool done{false}; + bool done{false}; mutex m; condition_variable cv; @@ -121,9 +122,7 @@ BOOST_AUTO_TEST_CASE(task_system_restarts_after_it_went_pending) { { unique_lock block{m}; - while (!done) { - cv.wait(block); - } + invoke_waiting([&] { cv.wait(block, [&] { return done; }); }); } default_executor([&]() noexcept { @@ -137,9 +136,7 @@ BOOST_AUTO_TEST_CASE(task_system_restarts_after_it_went_pending) { { unique_lock block{m}; - while (done) { - cv.wait(block); - } + invoke_waiting([&] { cv.wait(block, [&] { return !done; }); }); } BOOST_REQUIRE(!done); @@ -287,8 +284,7 @@ BOOST_AUTO_TEST_CASE(MeasureTiming) { }); unique_lock lock{block}; - while (!done) - ready.wait(lock); + invoke_waiting([&]{ ready.wait(lock, [&]{ return done; }); }); while (counter < 3 * iterations) { rest();