Strictement parlant, la distinction entre parallèle, asynchrone et concurrent doit être faite ici.
Parallèle signifie qu'une "tâche" est répartie entre plusieurs sous-tâches plus petites qui peuvent être exécutées en même temps. Cela nécessite un processeur multi-core ou un ordinateur multi-CPU, où chaque tâche a son noyau dédié ou CPU. Ou plusieurs ordinateurs. PLINQ (parallélisme des données) et TPL (parallélisme des tâches) entrent dans cette catégorie. Asynchrone signifie que les tâches s'exécutent sans se bloquer les unes les autres. L'expression asynchrone F #, Rx, Begin/End pattern sont toutes des API pour la programmation asynchrone.
La concurrence est un concept plus large que la parallélisation et l'asynchronie. La simultanéité signifie que plusieurs «tâches» s'exécutent en même temps, interagissant les unes avec les autres. Mais ces "tâches" ne doivent pas fonctionner sur des unités de calcul physiques distinctes, comme cela est le cas dans la parallélisation. Par exemple, les systèmes d'exploitation multitâches peuvent exécuter simultanément plusieurs processus, même sur des ordinateurs monoprocesseurs à un seul cœur, en utilisant des tranches de temps. La concurrence peut être réalisée par exemple avec le modèle Actor et le passage de message (par exemple, la boîte aux lettres de F #, les processus Erlang (Retlang in .Net))
Les threads sont un concept relativement bas comparé aux concepts ci-dessus. Les threads sont des tâches exécutées dans un processus, s'exécutant simultanément et gérées directement par le planificateur du système d'exploitation. Vous pouvez implémenter la parallélisation lorsque le système d'exploitation mappe chaque thread sur un noyau distinct ou un modèle Actor en implémentant la mise en file d'attente des messages, le routage, etc. sur chaque thread.
Quelques liens utiles pour les données brutes: http://msdn.microsoft.com/en-us/concurrency/ee851578.aspx http://channel9.msdn.com/shows/The + Connaissance + Chambre/Pratiques Multi-Cœur-et-Parallèle-Programmation/ http://blogs.msdn.com/pfxteam/rss.xml – Brian
Eh bien, PLINQ/'Parallel' sont certainement les plus faciles à utiliser, mais pas applicable dans toutes les situations –