From a08df0f87eb17231b74ffb7de9ddee2676534f7e Mon Sep 17 00:00:00 2001 From: "KOKO\\Mimi" Date: Wed, 14 Oct 2026 17:50:11 +0900 Subject: [PATCH] test(hex8): await every worker before first paired linear call --- tests/unit/elements/hex8_high_low_test.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/unit/elements/hex8_high_low_test.cpp b/tests/unit/elements/hex8_high_low_test.cpp index 845cd40..91e008d 100644 --- a/tests/unit/elements/hex8_high_low_test.cpp +++ b/tests/unit/elements/hex8_high_low_test.cpp @@ -3,6 +3,7 @@ #include #include +#include #include #include #include @@ -10,6 +11,7 @@ #include #include #include +#include #include #include @@ -146,13 +148,17 @@ TEST(Hex8HighLow, ConcurrentFirstLinearTrialsAcrossCopiesAndMoveKeepBits) { ASSERT_TRUE(expected_b.HasValue()); std::promise start; const auto signal = start.get_future().share(); + std::atomic arrived{0U}; std::array>, 4> calls; for (std::size_t i = 0; i < calls.size(); ++i) calls[i] = std::async(std::launch::async, [&, i] { + arrived.fetch_add(1U, std::memory_order_release); signal.wait(); return (i % 2U == 0U ? element : moved) .EvaluateLinearHighLow(high, i < 2U ? low_a : low_b); }); + while (arrived.load(std::memory_order_acquire) != calls.size()) + std::this_thread::yield(); start.set_value(); for (std::size_t i = 0; i < calls.size(); ++i) { const auto response = calls[i].get();