Sommaire

Multithreading

1. Présentation

Un thread, ou littéralement un « fil » (d’exécution), est une unité de traitement au sein d’un processus. Un processus peut contenir plusieurs threads, qui s’exécutent alors en parallèle. La différence majeure entre un ensemble de threads et un ensemble de processus est que les processus ont chacun leur zone mémoire propre, tandis que les threads d’un même processus partagent une mémoire commune.

Il n’est pas rare que la résolution d’un problème de programmation passe par une solution basée sur le concept de programmation concurrente. Dans les faits, un logiciel interagit avec quantité d’éléments et réagit à quantité d’événements qui peuvent se produire en même temps. Par exemple, un clic de souris doit pouvoir être capté par un programme, mais celui-ci doit dans le même moment écouter une interface réseau dans l’attente d’un message, tout en affichant une vidéo et en jouant la piste sonore. Mettre en place un paradigme de programmation pouvant résoudre le traitement en parallèle de différentes tâches est donc bien plus logique et efficace. En effet, les enchaîner les unes à la suite des autres comporte des risques évidents de dégradation de la réactivité de tous ces traitements (vidéo qui saccade, interface ...