Pourquoi les threads sont-ils appelés threads?


9

Je comprends qu'un processus est une unité de propriété des ressources et des instructions exécutables. Les threads permettent à un processus de partager ses ressources avec plusieurs exécutions, et il est plus facile pour un système d'exploitation de planifier des threads en raison de tous les frais généraux associés à des processus entiers.

Mais pourquoi le fil du nom ? At-il une référence à la chaîne ou à l'entrelacement de l'exécution? Même ainsi, ce n'est pas un terme intuitif à mon avis.

Réponses:


11

Avez-vous cherché dans un dictionnaire? Le mot fil a une signification après couture.

3: quelque chose de continu ou d'étiré: comme

a: une ligne de raisonnement ou un train de pensée qui relie les parties dans une séquence (comme des idées ou des événements)

http://www.merriam-webster.com/dictionary/thread


Intéressant. J'avais fait une recherche pour "définir le fil" mais cette définition n'était pas l'une d'entre elles. Je suis heureux que vous l'ayez mentionné, car il est suffisamment abstrait pour traverser le pont de l'utilisation générale à la programmation.
Matt

9

Avez-vous déjà vu comment plusieurs fils, torsadés, forment un cordon plus épais et plus résistant?

C'est la métaphore, chaque thread est indépendant mais tous les threads collaborent ensemble pour une sortie de calcul finale. De plus, comme dans le fil textile, un fil peut se casser sans compromettre la structure de l'ensemble du cordon.

entrez la description de l'image ici


2
alors que je me représentais toujours des "fils" juste toi et GrandmasterB les décrivais, pas sûr de tout le "cordon tordu, plus épais et plus fort". Au lieu de cela, la plupart des threads dans un système d'exploitation ressemblent à quelque chose comme ceci: miqel.com/bonnaroo_2008_music/yarn_string_trips.jpg (le gars à droite serait le contrôleur de mémoire) juste là et OS leur permet juste de faire tout ce qu'ils veulent (dans des limites raisonnables)
DXM

7

tl; dr: Ils sont appelés threads parce que "thread" est une métaphore appropriée.


Lorsque vous démarrez un thread, vous comptez sur le système d'exploitation pour allouer du temps de traitement afin que votre thread puisse s'exécuter. Pendant que votre thread s'exécute, le processeur (ou core) place toute son attention sur votre thread. Lorsque le système d'exploitation bascule le noyau vers un autre thread, votre thread cesse de s'exécuter pendant que l'autre thread est en cours de maintenance.

L'exécution saute donc partout. Mais l'intégrité de l'ensemble des instructions machine reste intacte, malgré ces sauts, car nous construisons des clôtures et des mécanismes de concurrence pour protéger son état et l'état des objets avec lesquels il interagit.

Ainsi, le thread se réfère, non à l'exécution d'instructions dans un thread particulier, mais aux instructions qui seront éventuellement exécutées dans le thread que nous avons créé. Chaque thread, en d'autres termes, peut être considéré comme une machine ou un agent individuel (nous les appelons des processus légers), sans avoir à penser à tous les changements de contexte que le système d'exploitation effectue pour donner l'impression qu'ils sont tous s'exécutant simultanément.

En d'autres termes, malgré tous les sauts que fait le système d'exploitation dans les coulisses, ce que nous appelons un thread (la séquence d'opérations que nous exécutons dans un processus léger) peut toujours être considéré comme la même séquence d'opérations, si nous n'avions pas engendré le fil, en supposant que nous avons pris les protections de concurrence nécessaires.


Si cette description vous semble trop lourde et abstraite, pensez à un fil dans un forum, comme Reddit. Vous pouvez dériver de nouvelles discussions; chaque discussion est son propre fil conducteur. Vous pouvez sauter d'avant en arrière entre les threads. Mais chaque thread conserve son intégrité structurelle en tant que conversation individuelle.


4

Il est difficile de démêler (jeu de mots pleinement intentionné) la source du terme «fil» car diverses choses bouent les eaux.

L'utilisation du fil dans le sens du forum ou de l'e-mail découle presque certainement de l'expression "fil de conversation" qui, selon cela, remonte à 1593.

Les choses semblent être moins claires quant à la signification des threads que vous demandez, car selon ce lien, les threads tels que nous les connaissons n'étaient en fait appelés "threads" que dans les années 70 ou peut-être au début des années 80 malgré la mise en œuvre d'un processus de mémoire partagée. en fait antérieure à ce que nous considérons aujourd'hui comme des processus lourds. Étant donné qu'une forme apparentée de multitraitement à mémoire partagée est appelée "fibre", je soupçonne fortement que le mot "fil" est supposé évoquer le tissage d'un tissu ou une autre analogie liée au textile.


3

Je pense que cela a à voir avec un «fil de raisonnement» ou un «fil de pensée».

Contrairement à un processus, les threads partagent la mémoire. Donc, si un processus est assimilé à une personne ayant son propre esprit (mémoire), un fil peut être assimilé à une ligne de pensée dans cet esprit.


1

J'ai lu quelque part l'analogie des fils dans la programmation. Pensez CPU comme une aiguille à coudre, et le fil comme la chaîne réelle. Maintenant, si vous avez plusieurs aiguilles à coudre mais un seul fil. Ne pensez-vous pas, ce sera assez inefficace. L'autre CPU / aiguille à coudre attendra que le fil soit disponible. Cependant, si nous avons plusieurs threads, le travail peut être accompli en peu de temps.


1
Qu'est ce qui ne va pas avec ça? Pourquoi -1?
habile
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.