6
votes

Quels sont les threads (qu'est-ce qu'un fil)?

Je suis toujours confondu sur les concepts de fil. Je n'ai pas l'occasion de les utiliser dans un environnement réel jusqu'à présent. Il serait utile que quelqu'un puisse expliquer des threads pour moi.


6 commentaires

Cette question est beaucoup trop large pour répondre. En outre, si vous n'avez pas besoin d'utiliser des threads, alors ne le faites pas. C'est trop facile de faire la mauvaise chose.


Il y a une belle page sur wikipedia: fr.wikipedia.org/wiki/thread_%28Computer_Science% 29 Résumé abrégé: un thread est un processus léger si vous utilisez des threads, faites attention au comportement de chaque fil et surtout aux ressources mutuelles.


Cela semble être une question parfaitement légitime qui pourrait aider beaucoup de gens.


@Johnsaunders sa question parfaitement légitime. Toutes les questions sur SA n'ont pas besoin de plonger dans les profondeurs obscures, ésotériques de celle-ci et de la programmation. Stahpe ça.


@Sethatvelut: La question était trop large il y a cinq ans et est trop large aujourd'hui. C'est une question légitime , juste loin trop large.


Non ce n'est pas. C'est une question généralisée et il méritait une réponse générale. Question large: "Mon code ne fonctionne pas et j'ai besoin d'aide pour le débogage". Des questions larges, par exemple, ne peuvent pas être répondues immédiatement. Cette question peut clairement et 5 ans plus tard, vous êtes toujours faux.


4 Réponses :


2
votes

Un thread individuel est tellement nommé car il s'agit d'un seul fil d'exécution via votre code. Si vous avez plusieurs threads, vous disposez de plusieurs threads d'exécution via votre code simultanément (ou aussi simultanément que votre système unique / multicœur prend en charge). Les deux threads ont accès au même tas, cependant, utilisez différentes piles. Cela signifie que les données de votre programme peuvent être visibles par les deux threads et peuvent être modifiés par le fil. Cela peut bien sûr conduire à de graves problèmes qui nécessitent une protection contre.

Il convient de noter qu'un thread est différent d'un processus. Une différence clé est que deux threads peuvent accéder aux mêmes données (tas) tandis que deux processus ne peuvent pas.

Pour une description plus complète, voir Autres Descriptions en ligne

wikipedia


0 commentaires

2
votes

au risque de simplifier:

Un thread est une ligne d'exécution via un programme.

Dans votre modèle de programmation de base, l'ordinateur trace simplement dans votre programme une déclaration à la fois, et à un moment donné, une seule déclaration est excrécue. Si votre programme branche ou appelle une autre routine, l'exécution quittera l'endroit où le contrôle a été transféré et commencera à exécuter à un autre endroit, mais toujours, une seule chose est faite à la fois.

avec des threads, plusieurs lignes de contrôle peuvent être exécutées en même temps. Par exemple, une partie de votre programme peut interagir avec l'utilisateur, tandis qu'une autre partie télécharge un fichier en arrière-plan. Les programmes multi-filetés sont beaucoup plus difficiles à programmer et il est beaucoup plus difficile d'envisager comment ils fonctionnent.


0 commentaires

6
votes

Quelque chose que personne n'a pris le temps de m'expliquer était la différence entre un processus et un fil. Une fois que vous comprenez cela, où la coupe des threads ait beaucoup de sens.

Un système d'exploitation donne une mémoire de processus à utiliser. Un processus lors du démarrage a généralement un "fil" en cours d'exécution.

Le thread est ce que le système d'exploitation planifie sur la CPU et donne une adresse pour commencer à exécuter des instructions de.

Certaines personnes qui étaient beaucoup plus intelligentes que de moi ont travaillé sur le fait que la création de processus dans la plupart des systèmes d'exploitation était beaucoup plus chère que de créer un fil d'exécution. De plus, deux threads dans le même processus ont la possibilité d'accéder à la mémoire de processus sans utiliser d'appel d'un système d'exploitation et / ou de mémoire partagée pour le faire, ce qui signifie que, bien que vous puissiez maintenant synchroniser l'accès à la mémoire de threads, vous pouvez faire plus de travail en moins temps.

Ainsi, le filetage est un concept important à comprendre et il est principalement utilisé consistait à accroître la performance des programmes qui avaient une simultanée pouvant être exploitée, la première utilisation majeure (modifier: cela peut ne pas avoir été la "première" utilisation "étant en cours d'exécution L'interface graphique d'une application sur un fil et effectuant un traitement sur un autre, la pierre angulaire de la conception d'interface utilisateur moderne.


0 commentaires

8
votes

Une explication simple serait que vous avez un travail à faire et que vous obtenez une seule personne pour faire le travail.

Cette seule personne est similaire à un fil dans un ordinateur.

Une personne peut faire une chose à la fois, afin de faire le travail, il procède à travers les tâches du travail, une tâche à la fois, une opération sur chaque tâche à la fois.

Pour accélérer un emploi, vous pouvez mettre plus de personnes au même travail. Par exemple, disons que vous avez besoin de peindre une maison. Vous engagez 4 personnes pour faire cela.

Ces 4 personnes pourraient être similaires à 4 threads en ce qu'ils travaillent avec les mêmes ressources (même maison, mêmes seaux de peinture) et ils peuvent diviser le travail.

Un processus apparaîtrait au travail de peinture de cette maison.

Cette explication simple se décompose quelque peu en ce qui concerne les machines qui ne disposent pas de suffisamment de cœurs de CPU pour exécuter simultanément tous les threads, mais je vais l'ignorer ici.


1 commentaires

Simple et facile à comprendre.