Tareas ligeras

 

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

En este documento se describe el rol de las tareas ligeras en el runtime de simultaneidad. Una tarea ligera es una tarea que programa directamente a partir del objeto concurrency::ScheduleGroup o concurrency::Scheduler. Una tarea ligera recuerda a la función que se proporciona a la función de la API de Windows CreateThread. Por consiguiente, las tareas ligeras son útiles cuando se adapta código existente para usar la funcionalidad de programación del Runtime de simultaneidad. El propio Runtime de simultaneidad utiliza las tareas ligeras para programar los agentes asincrónicos y enviar mensajes entre los bloques de mensajes asincrónicos.

System_CAPS_ICON_tip.jpg Sugerencia

El runtime de simultaneidad proporciona un programador predeterminado y, por tanto, no es necesario crear uno en la aplicación. Dado que el programador de tareas ayuda a ajustar el rendimiento de las aplicaciones, se recomienda que comience con Parallel Patterns Library (PPL) o Biblioteca de agentes asincrónicos si no ha usado antes el runtime de simultaneidad.

Las tareas ligeras llevan menos sobrecarga que los agentes asincrónicos y los grupos de tareas. Por ejemplo, el runtime no informa cuando finaliza una tarea ligera. Además, el runtime no detecta ni administra las excepciones que se producen desde una tarea ligera. Para obtener más información sobre control de excepciones y tareas ligeras, vea Control de excepciones.

Para la mayoría de las tareas, recomendamos utilizar funcionalidad más robusta, como grupos de tareas y algoritmos paralelos, porque permiten descomponer más fácilmente tareas complejas en tareas más básicas. Para obtener más información acerca de los grupos de tareas, vea Paralelismo de tareas. Para obtener más información acerca de los algoritmos paralelos, vea Algoritmos paralelos.

Para crear una tarea ligera, llame a concurrency::ScheduleGroup::ScheduleTask, concurrency::CurrentScheduler::ScheduleTask, o un método de concurrency::Scheduler::ScheduleTask . Para esperar a que una tarea ligera finalice, espere a que el programador primario para cerrar o use un mecanismo de sincronización como un objeto de concurrency::event .

Ejemplo

Para obtener un ejemplo que muestra cómo adaptar el código existente para utilizar una tarea ligera, vea Tutorial: Adaptar el código existente para usar tareas ligeras.

Vea también

Programador de tareas
Tutorial: Adaptar el código existente para usar tareas ligeras