Namespaces
Variants

std:: jthread

From cppreference.net
Concurrency support library
Threads
(C++11)
jthread
(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
Definido en el encabezado <thread>
class jthread ;
(desde C++20)

La clase jthread representa un único hilo de ejecución . Tiene el mismo comportamiento general que std::thread , excepto que jthread se reincorpora automáticamente en la destrucción, y puede ser cancelado/detenido en ciertas situaciones.

Los hilos comienzan su ejecución inmediatamente tras la construcción del objeto hilo asociado (sujeto a posibles retardos de planificación del SO), iniciando en la función de nivel superior proporcionada como argumento del constructor . El valor de retorno de la función de nivel superior se ignora y si termina lanzando una excepción, std::terminate es llamado. La función de nivel superior puede comunicar su valor de retorno o una excepción al llamador mediante std::promise o modificando variables compartidas (lo cual puede requerir sincronización, ver std::mutex y std::atomic ).

A diferencia de std::thread , el jthread mantiene lógicamente un miembro privado interno de tipo std::stop_source , que mantiene un estado de parada compartido. El constructor de jthread acepta una función que toma un std::stop_token como su primer argumento, el cual será proporcionado por el jthread desde su std::stop_source interno. Esto permite que la función verifique si se ha solicitado la parada durante su ejecución y retorne si así ha ocurrido.

std::jthread los objetos también pueden estar en el estado que no representa ningún hilo (después de la construcción por defecto, movimiento desde, detach , o join ), y un hilo de ejecución puede no estar asociado con ningún jthread objeto (después de detach ).

No dos objetos std::jthread pueden representar el mismo hilo de ejecución; std::jthread no es CopyConstructible ni CopyAssignable , aunque sí es MoveConstructible y MoveAssignable .

Contenidos

Tipos de miembros

Tipo de miembro Definición
id std::thread::id
native_handle_type ( opcional* ) std::thread::native_handle_type

Funciones miembro

construye un nuevo objeto jthread
(función miembro pública)
si el hilo es joinable, se solicita una parada y el hilo se une
(función miembro pública)
mueve el objeto jthread
(función miembro pública)
Observadores
verifica si el hilo es joinable, es decir, potencialmente ejecutándose en contexto paralelo
(función miembro pública)
devuelve el id del hilo
(función miembro pública)
devuelve el manejador de hilo subyacente definido por la implementación
(función miembro pública)
devuelve el número de hilos concurrentes soportados por la implementación
(función miembro estática pública)
Operaciones
espera a que el hilo finalice su ejecución
(función miembro pública)
permite que el hilo se ejecute independientemente del manejador de hilo
(función miembro pública)
intercambia dos objetos jthread
(función miembro pública)
Manejo de stop token
devuelve un objeto stop_source asociado con el estado de parada compartido del hilo
(función miembro pública)
devuelve un stop_token asociado con el estado de parada compartido del hilo
(función miembro pública)
solicita la parada de ejecución a través del estado de parada compartido del hilo
(función miembro pública)

Funciones no miembro

especializa el algoritmo std::swap
(función)

Notas

Macro de prueba de características Valor Std Característica
__cpp_lib_jthread 201911L (C++20) Stop token y joining thread

Véase también

(C++11)
gestiona un hilo separado
(clase)