std::thread::join - cppreference.com
De cppreference.com
|
|
(desde C++11) | |
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 thread desde múltiples hilos/subprocesos constituye una carrera de datos que da como resultado un comportamiento indefinido.
Parámetros
(Ninguno)
Valor de retorno
(Ninguno)
Poscondiciones
joinable() es false
Excepciones
std::system_error si ocurre un error.
Condiciones de error
- std::errc si
this->get_id() == std::this_thread::get_id()(bloqueo detectado) - std::errc si el hilo no es válido
- std::errc si joinable() es
false
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::thread helper1(foo); std::cout << "iniciando el segundo auxiliar...\n"; std::thread 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!
Referencias
- El estándar C++20 (ISO/IEC 14882:2020):
- 32.4.2.5 Members [thread.thread.member]
- El estándar C++17 (ISO/IEC 14882:2017):
- 33.3.2.5 thread members [thread.thread.member]
- El estándar C++14 (ISO/IEC 14882:2014):
- 30.3.1.5 thread members [thread.thread.member]
- El estándar C++11 (ISO/IEC 14882:2011):
- 30.3.1.5 thread members [thread.thread.member]
Véase también
| Permite que el hilo se ejecute independientemente del identificador del hilo (función miembro pública) [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) [editar] | |