Programador de tareas (Runtime de simultaneidad)

Los temas de esta parte de la documentación describen las características relevantes del Programador de tareas de Runtime de simultaneidad. El Programador de tareas es útil cuando desea ajustar el rendimiento del código existente que usa el runtime de simultaneidad.

Importante

El Programador de tareas no está disponible en una aplicación de Plataforma universal de Windows (UWP). Para obtener más información, vea Creación de operaciones asincrónicas en C++ para aplicaciones UWP.

En Visual Studio 2015 y versiones posteriores, la clase concurrency::task y los tipos relacionados de ppltasks.h usan ThreadPool de Windows como programador. Este tema ya no se aplica a los tipos que se definen en ppltasks.h. Los algoritmos paralelos, como parallel_for, siguen usando Runtime de simultaneidad como programador predeterminado.

Sugerencia

Runtime de simultaneidad proporciona un programador predeterminado, por lo que no deberá crear uno en la aplicación. El Programador de tareas permite ajustar el rendimiento de las aplicaciones por lo que, si no está familiarizado con Runtime de simultaneidad, se recomienda comenzar con la biblioteca de modelos paralelos (PPL) o la biblioteca de agentes asincrónicos.

El Programador de tareas programa y coordina las tareas en tiempo de ejecución. Una tarea es una unidad de trabajo que realiza un trabajo específico. Normalmente, es posible ejecutar en paralelo varias tareas. Son ejemplos de tareas los trabajos que realizan los elementos de grupo de tareas, los algoritmos paralelos y los agentes asincrónicos.

El Programador de tareas administra los detalles relacionados con la programación eficaz de las tareas en equipos con varios recursos informáticos. Asimismo, usa las características más recientes del sistema operativo subyacente. Por lo tanto, las aplicaciones que usan Runtime de simultaneidad escalan y mejoran automáticamente el hardware con capacidades expandidas.

Comparación con otros modelos de simultaneidad describe las diferencias existentes entre los mecanismos de programación cooperativa y preferente. El Programador de tareas usa la programación cooperativa y un algoritmo de robo de trabajo con el programador preferente del sistema operativo. De este modo, consigue realizar el mayor uso posible de los recursos de procesamiento.

El Runtime de simultaneidad proporciona un programador predeterminado, de modo que no es necesario administrar los detalles de infraestructura. Por lo tanto, en la mayoría de los casos, no usará el Programador de tareas directamente. Sin embargo, para satisfacer las necesidades de calidad de la aplicación, puede usar este programador para proporcionar su propia directiva de programación, o asociar programadores a tareas específicas. Por ejemplo, supongamos que dispone de una rutina de ordenación en paralelo que, como máximo, puede escalarse a través de cuatro procesadores. Con las directivas del programador puede crear un programador que, como máximo, genere cuatro tareas simultáneas. Si ejecuta la rutina de ordenación en este programador, habilitará al resto de programadores activos para usar los recursos de procesamiento restantes.

Title Descripción
Instancias de Scheduler Describe las instancias del programador y cómo usar las clases concurrency::Scheduler y concurrency::CurrentScheduler para administrarlas. Use las instancias del programador para asociar directivas de programación explícitas con tipos concretos de cargas de trabajo.
Directivas de Scheduler Describe el rol de las directivas del programador. Use las instancias del programador para controlar la estrategia de administración de tareas del programador.
Grupos de programación Describe el rol de los grupos de programación. Use los grupos de programación si necesita aplicar un grado elevado de localidad entre las tareas (por ejemplo, si resulta positivo para un grupo de tareas relacionadas ejecutarse en el mismo nodo del procesador).
Tareas ligeras Describe el rol de las tareas ligeras. Las tareas ligeras son útiles cuando se adapta código existente para usar la funcionalidad de programación del Runtime de simultaneidad.
Contextos Describe el rol de los contextos, la función concurrency::wait y la clase concurrency::Context. Use esta funcionalidad si necesita controlar cuándo los contextos deben realizar acciones de bloqueo, desbloqueo y rentabilidad, o cuándo debe habilitarse la suscripción excesiva en la aplicación.
Funciones de administración de memoria Describe las funciones concurrency::Alloc y concurrency::Free. Para mejorar el rendimiento de la memoria, estas funciones pueden asignar y liberar memoria de forma simultánea.
Comparación con otros modelos de simultaneidad Describe las diferencias existentes entre los mecanismos de programación cooperativa y preferente.
Biblioteca de modelos de procesamiento paralelo (PPL) Describe cómo usar diferentes modelos de procesamiento paralelo, como los algoritmos paralelos, en las aplicaciones.
Biblioteca de agentes asincrónicos Describe cómo se deben usar los agentes asincrónicos en las aplicaciones.
Runtime de simultaneidad Se describe el Runtime de simultaneidad, que simplifica la programación en paralelo, y contiene vínculos a los temas relacionados.