std:: jthread
|
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) |
|
|
[static]
|
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
|
(C++20)
|
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) |