fix(OnceFlag): add isSet and check before waiting (#6316)

This commit is contained in:
nerix
2025-07-03 23:22:15 +02:00
committed by GitHub
parent 2568d8a6ea
commit 70bdeb79c3
4 changed files with 39 additions and 1 deletions
+21
View File
@@ -79,10 +79,31 @@ TEST(OnceFlag, waitForTimeout)
});
startedFlag.wait();
ASSERT_TRUE(startedFlag.isSet());
startedAckFlag.set();
ASSERT_TRUE(startedAckFlag.isSet());
ASSERT_FALSE(stoppedFlag.waitFor(std::chrono::milliseconds{25}));
stoppedFlag.wait();
ASSERT_TRUE(stoppedFlag.isSet());
t.join();
}
TEST(OnceFlag, alreadySet)
{
OnceFlag flag;
flag.set();
ASSERT_TRUE(flag.isSet());
auto start = std::chrono::system_clock::now();
flag.wait();
auto stop = std::chrono::system_clock::now();
ASSERT_LT(stop - start, std::chrono::milliseconds{10});
start = std::chrono::system_clock::now();
ASSERT_TRUE(flag.waitFor(std::chrono::milliseconds{0}));
stop = std::chrono::system_clock::now();
ASSERT_LT(stop - start, std::chrono::milliseconds{10});
}