Thread

Un thread ou fil, est comparable à un processus car tous deux représentent l'exécution d'un ensemble d'instructions du langage machine d'un processeur.



Catégories :

Programmation concurrente - Ordonnanceur

Recherche sur Google Images :


Source image : top-news.fr
Cette image est un résultat de recherche de Google Image. Elle est peut-être réduite par rapport à l'originale et/ou protégée par des droits d'auteur.

Page(s) en rapport avec ce sujet :

  • If a thread blocks, all threads in the process block. • Kernel level : threads are scheduled by OS.... Migrate only at certain points in the program (e. g., ... (source : cs.berkeley)
  • En clair, si un thread garde la CPU, les autres threads ne vont pas s'exécuter. Cette routine sert à programmer un partage équitable de la CPU entre... (source : dil.univ-mrs)
  • L'appel est automatiquement pris en charge par un thread du pool de threads du processus. Le programme peut ultérieurement récupérer les infor-... (source : dotnetguru)
Un processus avec deux threads.

Un thread ou fil (d'exécution) (terme et définition normalisés par ISO/IEC 2382-7 :2000 ; autres appellations connues : processus léger, unité de traitement, unité d'exécution, fil d'instruction, processus allégé), est comparable à un processus car tous deux représentent l'exécution d'un ensemble d'instructions du langage machine d'un processeur. Du point de vue de l'utilisateur, ces exécutions semblent se dérouler en parallèle. Cependant, à l'endroit où chaque processus possède sa propre mémoire virtuelle, les threads d'un même processus se partagent sa mémoire virtuelle. Par contre, l'ensemble des threads possèdent leur propre pile d'appel.

Utilisation

Les threads sont typiquement utilisés avec l'interface graphique ("GUI") d'un programme. En effet, les interactions de l'utilisateur avec le processus, par l'intermédiaire des périphériques d'entrée, sont gérées par un thread, alors que les calculs lourds (en termes de temps de calcul) sont gérés par un ou plusieurs autres threads. Cette technique de conception de logiciel est avantageuse dans ce cas, car l'utilisateur peut continuer d'interagir avec le programme même quand ce dernier est en train d'exécuter une tâche. Une application pratique se retrouve dans les traitements de texte où la correction orthographique est exécutée tout en permettant à l'utilisateur de continuer à entrer son texte.

L'utilisation des threads permet par conséquent de rendre l'utilisation d'une application plus fluide, car il n'y a plus de blocage durant les phases de traitements intenses.

Threads et multitâche

Les threads se distinguent du multitâche plus classique par le fait que deux processus sont typiquement indépendants et peuvent interagir seulement à travers une API apportée par le dispositif telle que IPC. D'un autre côté les threads partagent une information sur l'état du processus, des zones de mémoires mais aussi d'autres ressources. Dans la mesure où il n'y a pas de changement de mémoire virtuelle, la commutation de contexte (context switch) entre deux threads est moins coûteuse que la commutation de contexte entre deux processus. On peut y voir un avantage de la programmation utilisant des threads multiples.

Avantages et inconvénients

Occasionnellemen, les programmes utilisant des threads sont plus rapides que des programmes architecturés plus classiquement, surtout sur les machines comportant plusieurs processeurs. Hormis le problème du coût de la commutation de contexte, le principal surcoût dû à l'utilisation de processus multiples provient de la communication entre processus scindés. En effet, le partage de certaines ressources entre threads permet une communication plus efficace entre les différents threads d'un processus. À l'endroit où deux processus scindés doivent utiliser un mécanisme apporté par le dispositif pour communiquer, les threads partagent une partie de l'état du processus.

La programmation utilisant des threads est cependant plus complexe, et l'accès à certaines ressources partagées doit être restreint par le programme lui-même, pour éviter que l'état d'un processus ne devienne provisoirement incohérent, tandis qu'un autre thread va avoir besoin de consulter cette portion de l'état du processus. Il est par conséquent obligatoire de mettre en place des mécanismes de synchronisation (avec sémaphores par exemple), tout en conservant à l'esprit que l'utilisation de la synchronisation peut aboutir à des situations d'interblocage. La complexité des programmes utilisant des threads est aussi nettement plus grande que celle des programmes déférant le travail à faire à plusieurs processus plus simples. Cette complexité accrue, quand elle est mal gérée lors de la phase de conception ou de mise en œuvre d'un programme, peut conduire à de multiples problèmes.

Support des threads

Les systèmes d'exploitation mettent en œuvre le plus souvent les threads.

Certains langages de programmation, tel que Java et C#. NET intègrent un support pour les threads dans le langage, alors que la majorité des autres langages ne le permettent que par des extensions du langage reconnu ou par l'intermédiaire de bibliothèques. En programmation orientée objet on parle de classe réentrante quand des instances différentes de cette classe peuvent exister simultanément dans différents threads.

Confusion envisageable

Il ne faut pas confondre la technologie Hyperthreading incluse dans certains processeurs Intel avec les threads. Cette technologie permet en effet autant l'exécution simultanée de processus différents que de threads. Toute machine comportant des processeurs multiples (SMP) ou des processeurs intégrant l'HyperThreading permet l'exécution plus rapide de programmes utilisant des threads autant que des processus multiples.

Voir aussi

Lien externe

Recherche sur Amazone (livres) :




Ce texte est issu de l'encyclopédie Wikipedia. Vous pouvez consulter sa version originale dans cette encyclopédie à l'adresse http://fr.wikipedia.org/wiki/Processus_l%C3%A9ger.
Voir la liste des contributeurs.
La version présentée ici à été extraite depuis cette source le 07/04/2010.
Ce texte est disponible sous les termes de la licence de documentation libre GNU (GFDL).
La liste des définitions proposées en tête de page est une sélection parmi les résultats obtenus à l'aide de la commande "define:" de Google.
Cette page fait partie du projet Wikibis.
Accueil Recherche Aller au contenuDébut page
ContactContact ImprimerImprimer liens d'évitement et raccourcis clavierAccessibilité
Aller au menu