Rewrite multithreading test to not use jthreads

This commit is contained in:
Jeremy Rifkin 2025-01-18 11:29:04 -06:00
parent 29e64e4f22
commit f1cb615f4e
No known key found for this signature in database
GPG Key ID: 19AA8270105E8EB4
2 changed files with 10 additions and 8 deletions

View File

@ -481,7 +481,7 @@ set_tests_properties(
add_executable(Multithreading ${TESTS_DIR}/X37-Multithreading.cpp)
target_link_libraries(Multithreading PRIVATE Catch2::Catch2WithMain)
target_compile_features(Multithreading PRIVATE cxx_std_20)
target_compile_features(Multithreading PRIVATE cxx_std_11)
add_test(
NAME Reporters::Multithreading
COMMAND ${CMAKE_COMMAND} -E env $<TARGET_FILE:Multithreading>

View File

@ -11,25 +11,27 @@
#include <catch2/benchmark/catch_benchmark.hpp>
#include <thread>
#include <stop_token>
#include <atomic>
TEST_CASE( "ThreadAssertionTest",
"[Multithreading]" ) {
std::atomic_bool should_stop = false;
SECTION( "Basic" ) {
std::jthread a([] (const std::stop_token& token) {
while (!token.stop_requested()) {
std::thread a([&should_stop] () {
while (!should_stop) {
FAIL_CHECK(false);
CHECK(true);
}
});
std::jthread b([] (const std::stop_token& token) {
while (!token.stop_requested()) {
std::thread b([&should_stop] () {
while (!should_stop) {
FAIL_CHECK(false);
CHECK(true);
}
});
std::this_thread::sleep_for( std::chrono::milliseconds( 1'000 ) );
a.get_stop_source().request_stop();
b.get_stop_source().request_stop();
should_stop = true;
a.join();
b.join();
}
}