diff --git a/libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.wait/lost_wakeup.pass.cpp b/libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.wait/lost_wakeup.pass.cpp index 17ad72dd74866..6b486173a4743 100644 --- a/libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.wait/lost_wakeup.pass.cpp +++ b/libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.wait/lost_wakeup.pass.cpp @@ -14,6 +14,8 @@ // #include +#include +#include #include #include #include @@ -38,8 +40,10 @@ int main(int, char**) { auto notify = [&] { for (int i = 0; i < num_iterations; ++i) { - while (waiter_ready.load() < num_waiters) { - } + assert(std::__libcpp_thread_poll_with_backoff( + [&]() -> bool { return waiter_ready.load() == num_waiters; }, + std::__libcpp_timed_backoff_policy(), + std::chrono::seconds(1)) == std::__poll_with_backoff_results::__poll_success); waiter_ready.store(0); state.fetch_add(1); state.notify_all();