std:: jthread
|
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) |
|
|
[static]
|
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
|
(C++20)
|
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) |