Espacios de nombres
Variantes
Acciones

std::jthread::join

De cppreference.com
< cpp‎ | thread‎ | jthread
 
 
Biblioteca de apoyo de concurrencia
Hilos
(C++11)
(C++20)
Espacio de nombres this_thread
(C++11)
(C++11)
(C++11)
Cancelación cooperativa
Exclusión mutua
(C++11)
Gestión genérica de bloqueo
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Variables de condición
(C++11)
Semáforos
Pestillos y barreras
(C++20)
(C++20)
Futuros
(C++11)
(C++11)
(C++11)
(C++11)
Recuperación segura
(C++26)
Punteros de riesgo
Tipos atómicos
(C++11)
(C++20)
Inicialización de tipos atómicos
(C++11)(en desuso en C++20)
(C++11)(en desuso en C++20)
Orden de memoria
Funciones independientes para operaciones atómicas
Funciones independientes para indicadores atómicos
 
 
void join();
(desde C++20)

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

La finalización del hilo identificado por *this se sincroniza con el retorno exitoso correspondiente de join().

No se realiza ninguna sincronización en *this en sí. Al mismo tiempo, llamar a join() en el mismo objeto jthread desde múltiples hilos/subprocesos constituye una carrera de datos que da como resultado un comportamiento indefinido.

Contenido

[editar] Parámetros

(Ninguno)

[editar] Valor de retorno

(Ninguno)

[editar] Poscondiciones

joinable() es false

[editar] Excepciones

std::system_error si ocurre un error.

[editar] Condiciones de error

[editar] Ejemplo

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

Salida:

iniciando el primer auxiliar...
iniciando el segundo auxiliar...
esperando a que terminen los auxiliares...
listo!

[editar] Referencias

  • El estándar C++20 (ISO/IEC 14882:2020):
  • 32.4.3.2 Members [thread.jthread.mem]

[editar] Véase también

Permite que el hilo se ejecute independientemente del identificador del hilo
(función miembro pública de std::thread) [editar]
Comprueba si el objeto representa a un hilo actualmente en ejecución o a la espera de recibir un join()
(función miembro pública de std::thread) [editar]
Documentación de C para thrd_join