Sommaire

Principes des threads

Un thread (en anglais, thread signifie fil), parfois traduit par unité d’exécution, est une portion de code qui peut s’exécuter à l’intérieur d’un processus. Un processus peut contenir différents threads, qui s’exécutent indépendamment les uns des autres, éventuellement simultanément si le système est multiprocesseur ou multicœur. Comme les threads s’exécutent dans le contexte d’un processus, ils partagent le même espace mémoire et disposent des mêmes ressources (fichiers ouverts, tubes, sockets, objets mémoire partagée, etc.). Pendant qu’un thread est en attente d’une ressource ou du retour d’un appel système (entrée/sortie longue par exemple), un autre thread du même processus peut s’exécuter. Unité d’exécution

Un processus traditionnel est un cas particulier, il n’exécute qu’un seul thread.

Le principal intérêt des threads est qu’ils partagent directement toutes les ressources du processus, et en particulier l’espace mémoire. La communication entre les threads est donc automatique, sans nécessiter de mécanisme particulier.

La principale difficulté de la programmation multithread réside dans la synchronisation des différents threads d’un processus, pour éviter les accès concurrents aux données et aux ressources. ...