Namespaces
Variants

std:: stop_token

From cppreference.net
Concurrency support library
Threads
(C++11)
(C++20)
this_thread namespace
(C++11)
(C++11)
Cooperative cancellation
Mutual exclusion
Generic lock management
Condition variables
(C++11)
Semaphores
Latches and Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
Safe reclamation
Hazard pointers
Atomic types
(C++11)
(C++20)
Initialization of atomic types
(C++11) (deprecated in C++20)
(C++11) (deprecated in C++20)
Memory ordering
(C++11) (deprecated in C++26)
Free functions for atomic operations
Free functions for atomic flags
Défini dans l'en-tête <stop_token>
class stop_token ;
(depuis C++20)

La classe stop_token fournit les moyens de vérifier si une demande d'arrêt a été effectuée ou peut être effectuée, pour son objet std::stop_source associé. Il s'agit essentiellement d'une "vue" thread-safe de l'état d'arrêt associé.

Le stop_token peut également être passé au constructeur de std::stop_callback , de sorte que le rappel sera invoqué si la stop_token associée à la std::stop_source est demandée d'arrêter. Et le stop_token peut être passé aux fonctions d'attente interruptibles de std::condition_variable_any , pour interrompre l'attente de la variable condition si un arrêt est demandé.

Table des matières

Modèles d'alias de membre

Type Définition
callback_type < Callback > (depuis C++26) std:: stop_callback < Callback >

Fonctions membres

construit un nouvel objet stop_token
(fonction membre publique)
détruit l'objet stop_token
(fonction membre publique)
assigne l'objet stop_token
(fonction membre publique)
Modificateurs
échange deux objets stop_token
(fonction membre publique)
Observateurs
vérifie si l'état d'arrêt associé a été demandé
(fonction membre publique)
vérifie si l'état d'arrêt associé peut être demandé
(fonction membre publique)

Fonctions non membres

(C++20)
compare deux objets std::stop_token
(fonction)
spécialise l'algorithme std::swap
(fonction)

Notes

Un objet stop_token n'est généralement pas construit indépendamment, mais est plutôt récupéré depuis un std::jthread ou un std::stop_source . Cela lui permet de partager le même état d'arrêt associé que le std::jthread ou le std::stop_source .

Macro de test de fonctionnalité Valeur Std Fonctionnalité
__cpp_lib_jthread 201911L (C++20) Stop token et joining thread

Exemple

#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); // affiche 5 6 7 8... pendant environ 3 secondes
    std::this_thread::sleep_for(3s);
    // Le destructeur de jthread appelle request_stop() et join().
}

Sortie possible :

5 6 7 8 9 10 11 12 13 14 15 16 17 18 19