.NET 4 inclut un nouvel espace de noms, System.Threading.Tasks, qui contient des classes abstraisant la fonctionnalité de threading. Utilisez ThreadPool en arrière-plan. Une tâche représente le travail d’une unité qui doit être accomplie. Le travail de cette unité peut être exécuté dans un thread séparé ou une tâche peut être lancée de manière synchrone, ce qui nécessite d’attendre le thread principal de réglage. Utiliser des tâches vous donne non seulement une couche d’abstraction, mais aussi beaucoup de contrôle sur les threads sous-jacents. Les tâches offrent beaucoup de flexibilité pour planifier le travail à accomplir. Par exemple, vous pouvez définir une tâche continue – ce qui doit être effectué après l’achèvement d’une tâche. Cela peut faire la différence entre une tâche réussie et une non. De plus, les tâches peuvent être organisées dans une hiérarchie. Par exemple, une tâche parent peut créer une nouvelle tâche enfant. Cela crée une dépendance de sorte que si vous annulez la tâche parente, sa tâche enfant sera également annulée.
De nos jours, il est courant d’utiliser des méthodes d’exécution de tâches, et c’est une haute performance, et je ne sais pas où en est la performance.
J’ai moi-même testé Task and Thread, et je trouve que Task est très lente, ce qui affecte grandement les performances, et le code de test est le suivant :
Nous repassons la méthode en boucle 1000 fois, puis la méthode bloque pendant 100 millisecondes, et le résultat du test est le suivant :
Résultat:
L’exécution du thread prend 188 millisecondes
L’exécution de la tâche prend 14 671 millisecondes
La différence de vitesse entre les deux est de 78 fois !!
La tâche est très lente, je ne sais pas pourquoi cela arrive, y a-t-il un problème avec mon code de test, ou quoi ? J’espère que tu pourras expliquer pourquoi cela arrive...
|