Namespaces
Variants

std::jthread:: detach

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

Separa el hilo de ejecución del objeto jthread, permitiendo que la ejecución continúe de forma independiente. Cualquier recurso asignado será liberado una vez que el hilo finalice.

Después de llamar detach * this ya no posee ningún hilo.

Contenidos

Parámetros

(ninguno)

Valor de retorno

(ninguno)

Postcondiciones

joinable es false .

Excepciones

std::system_error si joinable ( ) == false o ocurre un error.

Ejemplo

#include <chrono>
#include <iostream>
#include <thread>
void independentThread() 
{
    std::cout << "Starting concurrent thread.\n";
    std::this_thread::sleep_for(std::chrono::seconds(2));
    std::cout << "Exiting concurrent thread.\n";
}
void threadCaller() 
{
    std::cout << "Starting thread caller.\n";
    std::jthread t(independentThread);
    t.detach();
    std::this_thread::sleep_for(std::chrono::seconds(1));
    std::cout << "Exiting thread caller.\n";
}
int main() 
{
    threadCaller();
    std::this_thread::sleep_for(std::chrono::seconds(5));
}

Salida posible:

Starting thread caller.
Starting concurrent thread.
Exiting thread caller.
Exiting concurrent thread.

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

espera a que el hilo finalice su ejecución
(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 de C para thrd_detach