Compartir por


Tareas ligeras

En el documento se describe el rol de las tareas ligeras en el Runtime de simultaneidad. Una tarea ligera es aquella que se programa directamente desde un objeto concurrency::Scheduler o concurrency::ScheduleGroup. Una tarea ligera es similar a la función que se proporciona a la función CreateThread de la API de Windows. Por lo tanto, 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 usa tareas ligeras para programar agentes asincrónicos y enviar mensajes entre bloques de mensajes asincrónicos.

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.

Las tareas ligeras conllevan menos sobrecarga que los agentes asincrónicos y los grupos de tareas. Por ejemplo, el tiempo de ejecución no le informa cuando finaliza una tarea ligera. Además, el tiempo de ejecución no detecta ni controla las excepciones que se inician desde una tarea ligera. Para más información sobre el control de excepciones, vea Control de excepciones.

Para la mayoría de las tareas, se recomienda usar una funcionalidad más sólida, como grupos de tareas y algoritmos paralelos, ya que permiten dividir más fácilmente las tareas complejas en otras más básicas. Para obtener más información sobre los grupos de tareas, vea Paralelismo de tareas. Para obtener más información sobre los algoritmos en paralelo, vea Algoritmos paralelos.

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

Ejemplo

Para ver un ejemplo que muestra cómo adaptar el código existente para usar una tarea ligera, vea Tutorial: Adaptación del código existente para usar tareas ligeras.

Consulte también

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