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 ( ) ;
(desde C++20)

Bloquea el hilo actual hasta que el hilo identificado por * this finalice su ejecución.

La finalización del hilo identificado por * this se sincroniza con la correspondiente devolución exitosa de join() .

No se realiza ninguna sincronización en * this mismo. Llamar concurrentemente a join ( ) en el mismo objeto jthread desde múltiples hilos constituye una condición de carrera que resulta en comportamiento indefinido.

Contenidos

Parámetros

(ninguno)

Valor de retorno

(ninguno)

Postcondiciones

joinable() es false .

Excepciones

std::system_error si ocurre un error.

Condiciones de error

Ejemplo

#include <chrono>
#include <iostream>
#include <thread>
void foo()
{
    // simular operación costosa
    std::this_thread::sleep_for(std::chrono::seconds(1));
}
void bar()
{
    // simular operación costosa
    std::this_thread::sleep_for(std::chrono::seconds(1));
}
int main()
{
    std::cout << "iniciando primer ayudante...\n";
    std::jthread helper1(foo);
    std::cout << "iniciando segundo ayudante...\n";
    std::jthread helper2(bar);
    std::cout << "esperando a que los ayudantes terminen..." << std::endl;
    helper1.join();
    helper2.join();
    std::cout << "¡hecho!\n";
}

Salida:

iniciando primer ayudante...
iniciando segundo ayudante...
esperando a que los ayudantes terminen...
¡hecho!

Referencias

  • Estándar C++23 (ISO/IEC 14882:2024):
  • 33.4.4.3 Miembros [thread.jthread.mem]
  • Estándar C++20 (ISO/IEC 14882:2020):
  • 32.4.3.2 Miembros [thread.jthread.mem]

Véase también

permite que el hilo se ejecute independientemente del manejador del hilo
(función miembro pública)
comprueba si el hilo es joinable, es decir, potencialmente ejecutándose en contexto paralelo
(función miembro pública)
Documentación C para thrd_join