fortuna: thread -> jthread; add die_point latch

This commit is contained in:
surtur 2022-01-23 20:07:49 +01:00
parent 06deab6ef1
commit 680272bed4
Signed by: wanderer
GPG Key ID: 19CE1EC1D9E0486D
2 changed files with 6 additions and 10 deletions

View File

@ -30,8 +30,8 @@ Fortuna::Fortuna() {
this->sync_point.wait(); // wait for init
th_sfm = std::thread(&Fortuna::seed_file_manager_service, this);
th_urandom = std::thread(&Fortuna::urandom_entropy_src_service, this);
th_sfm = std::jthread(&Fortuna::seed_file_manager_service, this);
th_urandom = std::jthread(&Fortuna::urandom_entropy_src_service, this);
}
catch (CryptoPP::Exception& e) {
fmt::print(stderr, "{}\n", e.what());
@ -39,12 +39,7 @@ Fortuna::Fortuna() {
}
}
Fortuna::~Fortuna() noexcept {
if (th_sfm.joinable()) {
th_sfm.join();
}
if (th_urandom.joinable()) {
th_urandom.join();
}
fmt::print("[*] Fortuna says goodbye!\n");
}

View File

@ -24,8 +24,8 @@ public:
std::mutex mtx_p_pools;
mutable std::mutex mtx_accu; // used in const fun, too
std::mutex print_mtx;
std::thread th_sfm;
std::thread th_urandom;
std::jthread th_sfm;
std::jthread th_urandom;
Fortuna();
~Fortuna() noexcept;
@ -114,6 +114,7 @@ public:
std::make_shared<accumulator::Accumulator>()};
std::latch sync_point{1}; // wait for init before spawning the threads
std::latch die_point{2}; // wait for service threads to die
}; // class Fortuna