Programador de tareas (Runtime de simultaneidad)

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

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 resulta útil para ajustar el rendimiento del código existente que usa Runtime de simultaneidad.

System_CAPS_ICON_important.jpg Importante

El Programador de tareas no está disponible en las aplicaciones de Tienda Windows 8.x. Para obtener más información, consulte Crear operaciones asincrónicas en C++ para aplicaciones de la Tienda Windows.

En Visual Studio de 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.

System_CAPS_ICON_tip.jpg 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 las bibliotecas de Parallel Patterns Library (PPL) o 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.

En este artículo, que Comparar con otros modelos de simultaneidad, se describen 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.

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.

TítuloDescripción
Instancias del programadorDescribe 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 del programadorDescribe 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ónDescribe 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 ligerasDescribe 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.
ContextosDescribe 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 memoriaDescribe 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.
Comparar con otros modelos de simultaneidadDescribe las diferencias existentes entre los mecanismos de programación cooperativa y preferente.
Parallel Patterns Library (PPL)Describe cómo se deben usar varios modelos paralelos (como los algoritmos paralelos) en las aplicaciones.
Biblioteca de agentes asincrónicosDescribe cómo se deben usar los agentes asincrónicos en las aplicaciones.
Runtime de simultaneidadSe describe el Runtime de simultaneidad, que simplifica la programación en paralelo, y contiene vínculos a los temas relacionados.
Mostrar: