std:: stop_token
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Modifiers | ||||
| Observers | ||||
| Non-member functions | ||||
|
Определено в заголовочном файле
<stop_token>
|
||
|
class
stop_token
;
|
(начиная с C++20) | |
Класс
stop_token
предоставляет средства для проверки, был ли сделан запрос на остановку или может быть сделан, для его ассоциированного
std::stop_source
объекта. По сути, это потокобезопасное "представление" ассоциированного состояния остановки.
stop_token
также может быть передан конструктору
std::stop_callback
, чтобы колбэк был вызван, если ассоциированный
stop_token
std::stop_source
запросил остановку. И
stop_token
может быть передан в прерываемые функции ожидания
std::condition_variable_any
, чтобы прервать ожидание условной переменной при запросе остановки.
Содержание |
Шаблоны псевдонимов членов
| Тип | Определение |
| callback_type < Callback > (начиная с C++26) | std:: stop_callback < Callback > |
Функции-члены
создает новый объект
stop_token
(public member function) |
|
уничтожает объект
stop_token
(public member function) |
|
присваивает объект
stop_token
(public member function) |
|
Модификаторы |
|
обменивает два объекта
stop_token
(public member function) |
|
Наблюдатели |
|
|
проверяет, было ли запрошено остановка для связанного состояния остановки
(public member function) |
|
|
проверяет, может ли быть запрошена остановка для связанного состояния остановки
(public member function) |
|
Функции, не являющиеся членами класса
|
(C++20)
|
сравнивает два объекта
std::stop_token
(функция) |
|
(C++20)
|
специализирует алгоритм
std::swap
(функция) |
Примечания
Объект
stop_token
обычно не создаётся независимо, а получается из
std::jthread
или
std::stop_source
. Это позволяет ему разделять то же связанное состояние остановки, что и
std::jthread
или
std::stop_source
.
| Макрос тестирования возможностей | Значение | Стандарт | Функция |
|---|---|---|---|
__cpp_lib_jthread
|
201911L
|
(C++20) | Токен остановки и присоединяемый поток |
Пример
#include <iostream> #include <thread> using namespace std::literals::chrono_literals; void f(std::stop_token stop_token, int value) { while (!stop_token.stop_requested()) { std::cout << value++ << ' ' << std::flush; std::this_thread::sleep_for(200ms); } std::cout << std::endl; } int main() { std::jthread thread(f, 5); // выводит 5 6 7 8... примерно в течение 3 секунд std::this_thread::sleep_for(3s); // Деструктор jthread вызывает request_stop() и join(). }
Возможный вывод:
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19