Токен остановки в C++
Легкая копия права наблюдать за остановкой -
это std::stop_token из std::stop_source
или из std::jthread.
Рабочий поток выйдет из цикла, когда
stop_requested станет истинным, и выведет слово:
#include <iostream>
#include <thread>
int main() {
std::jthread worker([](std::stop_token st) {
while (!st.stop_requested()) {
}
std::cout << "halt\n";
});
worker.request_stop();
return 0;
}
В std::jthread крутите пустой цикл, пока stop_token::stop_requested ложен. После выхода выведите "stop" и запросите остановку снаружи.