.NET 4 incluye un nuevo espacio de nombres, System.Threading.Tasks, que contiene clases que abstraen la funcionalidad de hilos. Usa ThreadPool en segundo plano. Una tarea representa el trabajo de una unidad que debe completarse. El trabajo de esta unidad puede ejecutarse en un hilo separado o una tarea puede iniciarse de forma sincrónica, lo que requiere esperar el hilo principal de sintonización. Usar tareas no solo te da una capa de abstracción, sino que también te da mucho control sobre los hilos subyacentes. Las tareas ofrecen mucha flexibilidad a la hora de programar el trabajo que hay que hacer. Por ejemplo, puedes definir una tarea continua: qué trabajo debe realizarse después de completar una tarea. Esto puede marcar la diferencia entre una tarea exitosa y una no. Además, las tareas pueden organizarse en una jerarquía. Por ejemplo, una tarea padre puede crear una nueva tarea hija. Esto crea una dependencia para que, si cancelas la tarea padre, su tarea hija también se cancelará.
Hoy en día, es popular usar métodos de ejecución de tareas, y es de alto rendimiento, y no sé dónde está el rendimiento de la tarea.
He probado yo mismo Task and Thread, y siento que Task es muy lento, lo que afecta mucho al rendimiento, y el código de prueba es el siguiente:
Repasamos el método 1000 veces, y luego el método bloquea durante 100 milisegundos, y el resultado de la prueba es el siguiente:
Resultado:
La ejecución del hilo tarda 188 milisegundos
La ejecución de la tarea dura 14.671 milisegundos
La diferencia de velocidad entre ambos es de 78 veces!!
La tarea es muy lenta, no sé por qué pasa esto, ¿hay algún problema con mi código de prueba o qué? Espero que puedas explicar por qué pasa esto...
|