Biblioteca de apoyo de hilos/subprocesos
C++ incluye apoyo integrado para hilos, exclusión mutua, variables de condición y futuros.
Contenido |
[editar] Hilos
Los hilos permiten a los programas ejecutar a lo largo de varios núcleos de procesador.
Definido en el archivo de encabezado
<thread> | |
(C++11) |
Gestiona un hilo/subproceso independiente. (clase) |
(C++20) |
std::thread con soporte para unión y cancelación automática. (clase) |
Funciones que gestionan el hilo actual | |
Definido en el espacio de nombres
this_thread | |
(C++11) |
Sugiere a la implementación que reprograme la ejecución de hilos. (función) |
(C++11) |
Devuelve el identificador de hilo/subproceso del hilo/subproceso actual. (función) |
(C++11) |
Detiene la ejecución del hilo/subproceso actual por una duración de tiempo especificada. (función) |
(C++11) |
Detiene la ejecución del hilo/subproceso actual hasta que ocurra un punto de tiempo especificado. (función) |
Cancelación de hilosLos tipos
|
(desde C++20) |
[editar] Acceso al tamaño de la caché
Definido en el archivo de encabezado
<new> | |
Desplazamiento mínimo para evitar compartimiento falso (false sharing). Desplazamiento máximo para promover compartimiento verdadero (true sharing). (constante) |
[editar] Exclusión mutua
Los algoritmos de exclusión mutua previenen que el acceso simultáneo de varios hilos a recursos compartidos. Esto previene carreras de datos y proporciona soporte para la sincronización entre hilos.
Definido en el archivo de encabezado
<mutex> | |
(C++11) |
Proporciona servicios de exclusión mutua básicos. (clase) |
(C++11) |
Proporciona un servicio de exclusión mutua que implementa bloqueo con un tiempo de espera. (clase) |
(C++11) |
Proporciona un servicio de bloqueo mutuo que puede ser bloqueado recursivamente por el mismo hilo/subproceso. (clase) |
(C++11) |
Proporciona un servicio de exclusión mutua que puede ser bloqueado recursivamente por el mismo hilo e implementa bloqueo con un tiempo de espera. (clase) |
Definido en el archivo de encabezado
<shared_mutex> | |
(C++17) |
Proporciona un servicio de exclusión mutua compartida. (clase) |
(C++14) |
Proporciona un servicio de exclusión mutua compartida e implementa bloqueo con un tiempo de espera. (clase) |
Gestión de cierre de exclusión mutua genérica | |
Definido en el archivo de encabezado
<mutex> | |
(C++11) |
Implementa un envoltorio de propiedad de mutex estrictamente basado en un ámbito. (plantilla de clase) |
(C++17) |
Envoltorio RAII que evita bloqueo mutuo para múltiples mutex. (plantilla de clase) |
(C++11) |
Implementa un envoltorio de propiedad de mutex movible. (plantilla de clase) |
(C++14) |
Implementa un envoltorio de propiedad de un mutex movible. (plantilla de clase) |
(C++11)(C++11)(C++11) |
Tipo de etiqueta utilizado para especificar la estrategia de bloqueo. (clase) |
(C++11)(C++11)(C++11) |
Constantes de etiqueta que se utilizan para la estrategia de bloqueo. (constante) |
Algoritmos de bloqueo genéricos | |
(C++11) |
Intenta tomar posesión de los mutex mediante llamadas repetidas a try_lock . (plantilla de función) |
(C++11) |
Bloquea los mutex especificados. Se bloquea si ninguno está disponible. (plantilla de función) |
Llamar una vez | |
(C++11) |
Objeto auxiliar para asegurarse que call_once invoque la función una sola vez. (clase) |
(C++11) |
Invoca una función una sola vez inclusive si se llama desde varios hilos. (plantilla de función) |
[editar] Variables de condición
Una variable de condición es una primitiva de sincronización que facilita que múltiples hilos puedan comunicarse entre sí. Permite que algunos hilos esperen (posiblemente con un tiempo máximo de espera) hasta que llegue la notificación de otro hilo para que puedan continuar. Una variable de condición siempre está asociada a un mutex.
Definido en el archivo de encabezado
<condition_variable> | |
(C++11) |
Proporciona una variable de condición asociada con un std::unique_lock. (clase) |
(C++11) |
Proporciona una variable de condición asociada con cualquier tipo de cerrojo. (clase) |
(C++11) |
Planifica una llamada a notify_all para que se invoque cuando éste hilo haya terminado completamente. (función) |
(C++11) |
Lista los resultados posibles de esperas cronometradas en variables de condición. (enum) |
SemáforosUn semáforo (semaphore) es una primitiva de sincronización de peso ligero utilizado para restringir el acceso concurrente a un recurso compartido. Cuando es posible usar ambos, un semáforo es más eficiente que una variable de condición.
Pestillos y barrerasLos pestillos (latches) y las barreras (barriers) son mecanismos de coordinación de hilos que permiten que cualquier número de hilos se bloqueen hasta que un número esperado de hilos llegue a la barrera. Los pestillos no pueden reutilizarse, mientras que las barreras pueden utilizarse repetidamente.
|
(desde C++20) |
[editar] Futuros
La biblioteca estándar proporciona servicios para la obtención de los valores que se devuelven y para atrapar las excepciones producidas por tareas asincrónas (es decir, las funciones puestas en marcha por hilos). Estos valores se comunican mediante un "estado compartido", en el que las tareas asíncronas pueden escribir su valor de retorno o almacenar una excepción, la cual puede examinarse, esperar por ella, y de otra forma manipulada por otros hilos que mantienen instancias de std::future o std::shared_future que referencian ese estado compartido.
Definido en el archivo de encabezado
<future> | |
(C++11) |
Almacena un valor para recuperación asíncrona. (plantilla de clase) |
(C++11) |
Empaqueta una función para almacenar su valor de retorno para la recuperación asíncrona. (plantilla de clase) |
(C++11) |
Espera a un valor que se establece asíncronamente. (plantilla de clase) |
(C++11) |
Espera a un valor (posiblemente referenciado por otros futuros) que se ha establecido asíncronamente. (plantilla de clase) |
(C++11) |
Ejecuta una función asíncronamente (posiblemente en un nuevo hilo) y devuelve un std::future que contendrá el resultado. (plantilla de función) |
(C++11) |
Especifica la política de lanzamiento de std::async. (enum) |
(C++11) |
Especifica los resultados de esperas cronometradas realizadas en std::future y std::shared_future. (enum) |
Errores futuros | |
(C++11) |
Informa de un error relacionado con futuros o promesas. (clase) |
(C++11) |
Identifica la categoría de error del futuro. (función) |
(C++11) |
Identifica los códigos de error del futuro. (enum) |
[editar] Véase también
Documentación de C de Biblioteca de apoyo de hilos/subprocesos
|