Запрос остановки потока в C++
Метод request_stop поднимает общий флаг,
который видят все std::stop_token,
связанные с этим потоком.
Главный поток попросит остановку, рабочий завершит цикл и напечатает подтверждение:
#include <iostream>
#include <thread>
int main() {
std::jthread worker([](std::stop_token st) {
while (!st.stop_requested()) {
}
std::cout << "end\n";
});
worker.request_stop();
return 0;
}
Запустите std::jthread с циклом по stop_requested. Вызовите request_stop из main и выведите "ready" после уничтожения jthread.