Programmation concurrence = programmation parallèle ? Ben non !
jeu, 19/06/2025 - 07:53
Dans la programmation moderne, nous parlons souvent de concurrence (concurrency) et de parallèlisme. Nous avons parfois tendance à les confondre. Sauf qu'il s'agit de concepts différents avec un fonctionnement différent.
Concurrence / programmation concurrence / concurrency
La concurrence est une application capable de traiter plusieurs tâches en même temps. La concurrence réduit le temps de réponse du système en utilisant une seule unité de traitement. Nous avons une illusion de parallèlisme mais dans la réalité, non. Les tâches ne sont pas traités en parallèle et une nouvelle tâche commence à être traité même si la précédente n'est pas totalement terminée. La concurrence est un entrelacement des processus sur un même coeur / CPU.
Pour résumer, la programmation concurrence est un paradigme de programmation tenant compte de plusieurs contextes d'exéctions (threads, processus, tâches). La programmation concurrence est dite asyncrhone car une tâche est lancée avant que la précédente ne se termine.
La concurrence permet de ne pas bloquer une application, de traîter les tâches demandées, de pouvoir utiliser les processus multi-coeur. On comprend alors que la concurrence ne permet un traitement "en continu" de la tâche car le système doit faire avancer chaque tâche.
Programmation parallèle
Le parallèlisme est un modèle de programmation différent. Pour faire simple, il s'agit d'exécuter x tâches / processus sur autant de coeurs / de processeurs. Dans ce cas, le traitement est "linéraire" et chaque processus s'exécute sur un coeur, un processeur. Cette approche permet de mieux utiliser l'ensemble des processeurs et de coeurs. Une définition possible : Le parallélisme vise à accroître la vitesse de calcul grâce à l'utilisation de plusieurs processeurs. Il s'agit d'une technique permettant d'exécuter simultanément différentes tâches. Elle implique plusieurs unités de traitement indépendantes, ou dispositifs informatiques, fonctionnant et exécutant des tâches en parallèle afin d'accroître la vitesse de calcul et d'améliorer le débit. (d'après TechDifferences.com)
Le parallèlisme permet de lancer et de traiter des tâches variées en même temps sur x coeurs / CPU et chaque processus avance indépendamment de l'autre et sans ralentir les autres tâches. Dans cette approche, nous ne changerons pas de tâches. Et chaque coeur termine la tâche en cours.
Il est possible de faire de la concurrence dans une approche parallèle.