std::jthread
Definido en el archivo de encabezado <thread>
|
||
class jthread; |
(desde C++20) | |
La clase jthread
representa un hilo único de ejecución. Tiene el mismo comportamiento general que std::thread, excepto que jthread
se reincorpora automáticamente al ser destruido y se puede cancelar o detener en determinadas situaciones.
Los hilos comienzan a ejecutarse inmediatamente después de la construcción del objeto hilo asociado (pendiente de cualquier retraso en la programación del sistema operativo), comenzando en la función de nivel superior proporcionada como un argumento del constructor. El valor de retorno de la función de nivel superior se ignora y si termina lanzando una excepción, se llama a std::terminate. La función de nivel superior puede comunicar su valor de retorno o una excepción al llamante a través de std::promise o modificando las variables compartidas (que pueden requerir sincronización, véanse std::mutex y std::atomic).
A diferencia de std::thread, el jthread
contiene lógicamente un miembro privado interno de tipo std::stop_source
, que mantiene un estado de detención compartido. El constructor de jthread
acepta una función que toma un std::stop_token como su primer argumento, que será pasado por el jthread
desde su stop_source
. Esto permite que la función compruebe si se ha solicitado que se detenga durante su ejecución y volver si lo ha hecho.
Los objetos std::jthread
también pueden estar en el estado que no representa ningún hilo (después de la construcción por defecto, si fue la fuente de una operación de movimiento, detach, o join), y un hilo de ejecución puede no estar asociado con ningún objeto jthread
(después de detach).
No hay dos objetos std::jthread
que puedan representar el mismo hilo de ejecución; std::jthread
no es CopyConstructible o CopyAssignable, aunque es MoveConstructible y MoveAssignable.
Contenido |
[editar] Tipos miembro
Tipo miembro | Definición |
id
|
std::thread::id |
native_handle_type (no siempre está presente)
|
std::thread::native_handle_type |
[editar] Funciones miembro
Construye un nuevo objeto jthread (función miembro pública) | |
Si joinable() es true, llama a request_stop() y luego a join() ; en ambos casos destruye el objeto jthread . (función miembro pública) | |
Mueve el objeto jthread (función miembro pública) | |
Observadores | |
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 )
| |
Devuelve el id del hilo (función miembro pública de std::thread )
| |
Devuelve el identificador del sistema operativo relativo al hilo (función miembro pública de std::thread )
| |
[estático] |
Devuelve el número de hilos simultáneos admitidos por la implementación. (función miembro estática pública de std::thread )
|
Operaciones | |
Espera a que el hilo termine su ejecución (función miembro pública de std::thread )
| |
Permite que el hilo se ejecute independientemente del identificador del hilo (función miembro pública de std::thread )
| |
Intercambia dos objetos hilo (función miembro pública de std::thread )
| |
Manipulación de tokens de detención | |
Devuelve un objeto stop_source asociado con el estado de detención compartido del hilo (función miembro pública) | |
Devuelve un objeto stop_token asociado con el estado de detención compartido del hilo/subproceso (función miembro pública) | |
Solicita la detención de la ejecución vía el estado de detención compartido del hilo/subproceso (función miembro pública) |
[editar] Funciones no miembro
(C++20) |
Especializa el algoritmo std::swap. (función) |
[editar] Notas
Macro de Prueba de característica | Valor | Estándar | Comentario |
---|---|---|---|
__cpp_lib_jthread |
201911L | (C++20) | Token de detención e Hilo de unión |
[editar] Véase también
(C++11) |
Gestiona un hilo/subproceso independiente. (clase) |