Filetage vs Traitement Parallèle
Microsoft .NET 4.0 introduit de nouvelles parallèle "améliorations" de son cadre. Je me demande quelle est la différence entre faire une application qui utilise le Système standard.Le filetage des fonctions par rapport à la nouvelle parallèle des améliorations.
Vous devez vous connecter pour publier un commentaire.
Probablement la différence la plus importante entre les Extensions Parallèles et régulières threading est le flux de contrôle.
Un thread, créé à l'aide de
new Thread(...)
ouThreadPool.QueueUserWorkItem
prendra fin à l'complètement indéterminée point dans le temps. Si vous écrivez ce code:Le texte
Item Queued
apparaîtra tout de suite, etWork Finished
sera imprimé après environ 1 seconde de retard.D'autre part, si vous écrivez quelque chose de similaire en utilisant en parallèle extensions:
Ce que vous allez voir dans ce cas d'un retard de 1 seconde avant que quelque chose se passe, puis une flopée de "Tester" les messages dans un ordre aléatoire, et puis le texte
Finished
.En d'autres termes, l'exécution de tâches en parallèle ne permet pas de modifier le déroulement du programme. Il va s'exécuter différentes tâches sur des threads différents, de sorte qu'ils peuvent être exécutées sur plusieurs cœurs de PROCESSEUR, afin d'améliorer le débit global du programme, mais aussi loin que la typique programmeur, ces tâches ne sont pas vraiment en cours d'exécution dans le "fond", comme ils le seraient avec un fil. Vous n'avez pas à changer votre structure du programme ou de faire quelque chose de spécial pour être averti lorsque le travail est terminé. Vous n'avez aucun contrôle sur ce qui se passe à l'intérieur de le bloc parallèle, mais vous ne savez pas que le bloc ne renvoie pas de contrôle jusqu'à ce que toutes les tâches parallèles sont complètes.
Bien que les Extensions Parallèles sont parfaits pour cela, il est à noter que les PX sont d'aucune utilité que ce soit lorsque vous avez réellement besoin pour exécuter une tâche en arrière-plan, telles que la mise en œuvre de planificateur, ou de déléguer à un thread de travail afin de garder une INTERFACE utilisateur réactive. Vous avez encore le besoin d'utiliser des threads ou asynchrone composants de ces.
Voici un bon channel 9 j'ai regardé un moment de retour sur ce sujet: http://channel9.msdn.com/posts/philpenn/Parallel-Programming-with-NET-Parallel-Extensions/
Le cadre parallèle utilise le .NET le modèle de threading, sous lequel à son tour s'appuie sur le Windows le modèle de threading. Cependant, beaucoup d'optimisation a été fait dans le cadre général pour faire le parallèle bibliothèque plus efficace.
Ce blog a plus de détails.
Traitement parallèle est juste un peu de fantaisie interface automatique la création de threads. Il est plus facile d'utiliser le traitement en parallèle de l'extension pour la plupart des tâches.