À retenir
- Permet de traiter plusieurs tâches de front.
- Optimise l'utilisation du processeur.
- Nécessite une gestion rigoureuse des ressources partagées pour éviter les conflits.
La programmation concurrente est une méthode de conception logicielle qui permet à un programme de gérer plusieurs tâches simultanément sur une même période. Plutôt que d'attendre la fin d'une action pour en commencer une autre, l'ordinateur jongle entre elles, à l'image d'un chef de cuisine qui surveille plusieurs casseroles en même temps.
Étymologie
Vient du latin concurrere, signifiant « courir ensemble ». En informatique, cela désigne des flux d'exécution (processus ou threads) qui progressent de front et se disputent l'accès aux ressources de la machine (mémoire, processeur).
Exemples d'usage
- Un navigateur internet qui télécharge un fichier en arrière-plan tout en vous laissant lire un article.
- Un serveur web qui répond aux requêtes de milliers d'utilisateurs en même temps.
- Un jeu vidéo qui gère la physique, l'intelligence artificielle et l'affichage de manière indépendante.
Cas d'usage
On l'utilise principalement pour améliorer la réactivité des interfaces graphiques (éviter que la fenêtre ne « gèle » pendant un calcul) et pour optimiser les performances sur les processeurs modernes équipés de plusieurs cœurs.
Bonnes pratiques
Le principal défi est d'éviter que deux tâches ne modifient la même donnée au même instant. Il est recommandé d'utiliser des mécanismes de protection comme les mutex (verrous) ou des sémaphores pour coordonner l'accès aux informations partagées et éviter les bugs imprévisibles.
Synonymes
Antonymes
Conseil
Si vous débutez, commencez par comprendre les concepts d'asynchronisme (async/await) avant de vous plonger dans la gestion manuelle des threads, qui est beaucoup plus complexe et source d'erreurs.
Questions fréquentes
Concurrence et parallélisme, est-ce la même chose ?
Non. La concurrence est l'art de gérer plusieurs tâches à la fois (logique), tandis que le parallélisme est le fait de les exécuter physiquement en même temps sur plusieurs processeurs.
Est-ce que cela rend les programmes plus rapides ?
Pas forcément. Cela les rend surtout plus efficaces et réactifs, mais la gestion de la concurrence elle-même consomme un peu de ressources.