Источник остановки в C++
Флаг остановки держит std::stop_source и
раздает связанные std::stop_token
наблюдателям.
Сохраним токен, передам его в std::jthread
и проверим, что остановка еще не запрошена:
#include <iostream>
#include <stop_token>
#include <thread>
int main() {
std::stop_source source;
std::stop_token token = source.get_token();
std::jthread worker([token]() {
if (!token.stop_requested()) {
std::cout << "run\n";
}
});
return 0;
}
Создайте std::stop_source, возьмите get_token и передайте токен в std::jthread, который печатает "token", если остановка не запрошена.