РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
769 of 815 menu

Метод request_stop

Метод request_stop класса jthread запрашивает остановку выполнения потока. Он устанавливает флаг остановки, связанный с объектом stop_token, который был передан в вызываемую функцию. Поток может проверить этот флаг и корректно завершить свою работу. Метод не принимает параметров и возвращает true, если запрос на остановку был успешно выполнен, и false, если остановка уже была запрошена ранее или поток не поддерживает остановку.

Синтаксис

jthread.request_stop()

Пример

Давайте создадим поток, который будет выводить числа до тех пор, пока не получит запрос на остановку. В основном потоке запросим остановку через 3 секунды:

#include <iostream> #include <thread> #include <chrono> using namespace std; int main() { jthread thr([](stop_token stoken) { int i = 0; while (!stoken.stop_requested()) { cout << i << endl; i++; this_thread::sleep_for(chrono::milliseconds(500)); } cout << "Stopped" << endl; }); this_thread::sleep_for(chrono::seconds(3)); thr.request_stop(); return 0; }

Результат выполнения кода:

0 1 2 3 4 5 "Stopped"

Пример

Давайте проверим возвращаемое значение метода request_stop. Первый вызов вернёт true, а повторный - false:

#include <iostream> #include <thread> using namespace std; int main() { jthread thr([](stop_token stoken) { while (!stoken.stop_requested()) { this_thread::sleep_for(chrono::milliseconds(100)); } }); bool first = thr.request_stop(); bool second = thr.request_stop(); cout << boolalpha; cout << first << endl; cout << second << endl; return 0; }

Результат выполнения кода:

true false

Смотрите также

  • класс jthread,
    который представляет поток с поддержкой остановки
  • метод join,
    который ожидает завершения потока
  • метод joinable,
    который проверяет, можно ли присоединить поток
  • метод sleep_for,
    который приостанавливает поток на заданное время
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить