Concurrence

Définition, exemples et bonnes pratiques

À retenir

  • La concurrence permet d'optimiser le temps d'attente et d'améliorer la fluidité.
  • Elle ne signifie pas forcément que les tâches se déroulent au même millième de seconde (c'est le rôle du parallélisme).
  • Elle complexifie le code car il faut synchroniser l'accès aux données partagées.

La concurrence est la capacité d'un système informatique à gérer plusieurs tâches qui semblent s'exécuter en même temps. Imaginez un jongleur : il n'a qu'une paire de mains, mais en lançant et rattrapant ses balles très rapidement, il donne l'impression de manipuler tout son attirail de manière simultanée.

Étymologie

Issu du latin concurrentia, signifiant « courir ensemble ». En informatique, ce terme est apparu pour décrire des processus ou des fils d'exécution (threads) qui se partagent le temps processeur pour progresser de front durant la même période.

Exemples d'usage

  • Un serveur web qui répond à des dizaines d'utilisateurs connectés en même temps sans faire attendre le suivant.
  • Votre smartphone qui continue de télécharger une application pendant que vous faites défiler votre fil d'actualité.
  • Un logiciel de montage vidéo qui calcule un rendu en arrière-plan pendant que vous continuez à monter une autre séquence.

Cas d'usage

Ce concept est omniprésent dans les systèmes d'exploitation pour faire tourner plusieurs logiciels, dans les bases de données pour gérer les accès multiples, et dans le développement web pour ne pas bloquer l'interface pendant un chargement.

Bonnes pratiques

Pour éviter que deux tâches ne se marchent sur les pieds, il est crucial d'utiliser des mécanismes de protection comme les verrous (locks) ou les mutex. Sans cela, on risque une « condition de course », où le résultat final dépend de l'ordre imprévisible dans lequel les tâches se terminent.

Synonymes

multitâche asynchronisme simultanéité

Antonymes

exécution séquentielle série linéarité

Conseil

Si vous débutez en programmation, familiarisez-vous d'abord avec les concepts d'asynchronisme (comme async et await) qui permettent de gérer la concurrence de manière plus simple et plus sécurisée qu'en manipulant directement des threads.

Questions fréquentes

Est-ce la même chose que le parallélisme ?

Pas tout à fait. La concurrence, c'est l'organisation de plusieurs tâches pour qu'elles avancent ensemble. Le parallélisme est l'exécution physique simultanée sur plusieurs cœurs de processeur.

Pourquoi la concurrence peut-elle faire planter un programme ?

Si deux tâches essaient de modifier la même variable au même moment sans protection, cela crée des bugs imprévisibles appelés corruptions de données.