Namespaces
Variants

std::jthread:: join

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
void join ( ) ;
(depuis C++20)

Bloque le thread actuel jusqu'à ce que le thread identifié par * this termine son exécution.

L'achèvement du thread identifié par * this se synchronise avec le retour réussi correspondant de join() .

Aucune synchronisation n'est effectuée sur * this lui-même. L'appel concurrent de join ( ) sur le même objet jthread depuis plusieurs threads constitue une course aux données qui entraîne un comportement indéfini.

Table des matières

Paramètres

(aucun)

Valeur de retour

(aucun)

Postconditions

joinable() est false .

Exceptions

std::system_error si une erreur se produit.

Conditions d'erreur

Exemple

#include <chrono>
#include <iostream>
#include <thread>
void foo()
{
    // simuler une opération coûteuse
    std::this_thread::sleep_for(std::chrono::seconds(1));
}
void bar()
{
    // simuler une opération coûteuse
    std::this_thread::sleep_for(std::chrono::seconds(1));
}
int main()
{
    std::cout << "starting first helper...\n";
    std::jthread helper1(foo);
    std::cout << "starting second helper...\n";
    std::jthread helper2(bar);
    std::cout << "waiting for helpers to finish..." << std::endl;
    helper1.join();
    helper2.join();
    std::cout << "done!\n";
}

Sortie :

starting first helper...
starting second helper...
waiting for helpers to finish...
done!

Références

  • Norme C++23 (ISO/IEC 14882:2024) :
  • 33.4.4.3 Membres [thread.jthread.mem]
  • Norme C++20 (ISO/CEI 14882:2020) :
  • 32.4.3.2 Membres [thread.jthread.mem]

Voir aussi

permet au thread de s'exécuter indépendamment du gestionnaire de thread
(fonction membre publique)
vérifie si le thread est joignable, c'est-à-dire potentiellement en cours d'exécution dans un contexte parallèle
(fonction membre publique)
Documentation C pour thrd_join