thread (fil)
1) Sur Internet et dans les forums Usenet ou autres, un thread, ou fil de discussion, désigne une série de réponses à la publication d'un message initial. Parmi toutes les discussions d'un forum, vous pouvez ainsi en suivre une en particulier ou y participer. Un fil de discussion est généralement représenté graphiquement sous la forme d'une arborescence dans laquelle les messages successifs sont « suspendus » au message d'origine. En tant qu'utilisateur d'un forum, vous contribuez à un fil en citant le sujet de référence dans le corps de votre message.
2) En programmation informatique, un thread, ou fil d'exécution, consiste en des informations substituables associées à une utilisation unique d'un programme capable de gérer plusieurs utilisateurs simultanés. Du point de vue du programme, le fil d'exécution représente les informations nécessaires pour servir un utilisateur individuel ou traiter une demande de service particulière. Si plusieurs utilisateurs exécutent le programme ou que d'autres programmes lui envoient des demandes simultanées, un fil d'exécution est créé et géré pour chacun. Ce fil permet au programme de savoir quel utilisateur est servi lorsque différents utilisateurs y accèdent en alternance. (Les informations du fil sont conservées dans une zone de données spéciale dont l'adresse est placée dans un registre. Le système d'exploitation sauvegarde toujours le contenu du registre lorsque le programme est interrompu et le restaure en redonnant le contrôle au programme.)
Les notions similaires de fil d'exécution et de tâche sont souvent confondues. Bien que la plupart des ordinateurs ne puissent exécuter qu'une seule instruction à la fois, ils fonctionnent si vite qu'ils semblent exécuter en même temps un grand nombre de programmes et servir un grand nombre d'utilisateurs. Le système d'exploitation de l'ordinateur donne son « tour » à chaque programme, puis l'oblige à attendre quand c'est le tour d'un autre programme. Il considère chacun d'entre eux comme une tâche pour laquelle certaines ressources sont identifiées et suivies. Chaque application de votre système (tableur, traitement de texte, navigateur) est gérée comme une tâche séparée que vous pouvez consulter et contrôler dans la liste des tâches. Si le programme lance une demande d'entrée-sortie, telle que la lecture d'un fichier ou son envoi à une imprimante, il crée un fil d'exécution. Les données conservées dans ce fil permettent au programme de reprendre au bon endroit à l'issue de l'opération d'entrée-sortie. Au même moment, les autres utilisations simultanées du programme sont gérées dans d'autres fils. La plupart des systèmes d'exploitation actuels prennent en charge le multitasking (multitâche) et le multithreading (multifil). Ils permettent également le multithreading au sein des processus d'un programme, afin d'éviter au système de créer un processus pour chaque fil d'exécution.
La spécification POSIX.4a C fournit une série d'interfaces de programmation (API) qui permettent au programmeur d'inclure la prise en charge des fils d'exécution dans son programme. Les outils de développement, sous-systèmes d'application et middleware de haut niveau offrent également des fonctionnalités de gestion de fils d'exécution. En outre, les langages de programmation orientée objet reconnaissent et favorisent le multithreading à plusieurs niveaux. Ainsi, Java prend en charge le multithreading en incluant des modificateurs de synchronisation dans sa syntaxe, en fournissant des classes développées pour le multithreading, dont d'autres classes peuvent hériter, et en assurant en arrière-plan le « nettoyage » (c'est-à-dire la récupération des zones de données qui ne sont plus utilisées) de plusieurs fils d'exécution.