Namespaces
Variants

std:: jthread

From cppreference.net
Concurrency support library
Threads
(C++11)
jthread
(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 <thread>
class jthread ;
(depuis C++20)

La classe jthread représente un unique fil d'exécution . Elle a le même comportement général que std::thread , sauf que jthread se réunit automatiquement lors de la destruction, et peut être annulé/arrêté dans certaines situations.

Les threads commencent leur exécution immédiatement après la construction de l'objet thread associé (sous réserve des délais d'ordonnancement du système d'exploitation), en commençant par la fonction de niveau supérieure fournie comme argument du constructeur . La valeur de retour de la fonction de niveau supérieur est ignorée et si elle se termine en lançant une exception, std::terminate est appelée. La fonction de niveau supérieur peut communiquer sa valeur de retour ou une exception à l'appelant via std::promise ou en modifiant des variables partagées (ce qui peut nécessiter une synchronisation, voir std::mutex et std::atomic ).

Contrairement à std::thread , le jthread détient logiquement un membre privé interne de type std::stop_source , qui maintient un état d'arrêt partagé. Le constructeur de jthread accepte une fonction qui prend un std::stop_token comme premier argument, qui sera transmis par le jthread depuis son std::stop_source interne. Cela permet à la fonction de vérifier si un arrêt a été demandé pendant son exécution, et de retourner si c'est le cas.

std::jthread peut également se trouver dans un état ne représentant aucun thread (après construction par défaut, déplacement, detach , ou join ), et un thread d'exécution peut ne pas être associé à un objet jthread (après detach ).

Aucun deux std::jthread objets ne peuvent représenter le même thread d'exécution ; std::jthread n'est pas CopyConstructible ou CopyAssignable , bien qu'il soit MoveConstructible et MoveAssignable .

Table des matières

Types membres

Type de membre Définition
id std::thread::id
native_handle_type ( optionnel* ) std::thread::native_handle_type

Fonctions membres

construit un nouvel objet jthread
(fonction membre publique)
si le thread est joignable, alors un arrêt est demandé et le thread est joint
(fonction membre publique)
déplace l'objet jthread
(fonction membre publique)
Observateurs
vérifie si le thread est joignable, c'est-à-dire potentiellement en cours d'exécution dans un contexte parallèle
(fonction membre publique)
retourne l' id du thread
(fonction membre publique)
retourne le handle de thread défini par l'implémentation sous-jacente
(fonction membre publique)
retourne le nombre de threads concurrents supportés par l'implémentation
(fonction membre statique publique)
Opérations
attend que le thread termine son exécution
(fonction membre publique)
permet au thread de s'exécuter indépendamment du handle de thread
(fonction membre publique)
échange deux objets jthread
(fonction membre publique)
Gestion des stop_token
retourne un objet stop_source associé à l'état d'arrêt partagé du thread
(fonction membre publique)
retourne un stop_token associé à l'état d'arrêt partagé du thread
(fonction membre publique)
demande l'arrêt de l'exécution via l'état d'arrêt partagé du thread
(fonction membre publique)

Fonctions non membres

spécialise l'algorithme std::swap
(fonction)

Notes

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

Voir aussi

(C++11)
gère un thread séparé
(classe)