Sous Linux, le thread fait référence à une route d'exécution au sein d'un programme, c'est-à-dire une séquence de contrôle au sein d'un processus. Tous les processus ont au moins un thread d'exécution. Le thread est la plus petite unité d'exécution d'un programme. Les threads partagent des données de processus, mais possèdent également leur propre partie de données.
L'environnement d'exploitation de ce tutoriel : système linux5.9.8, ordinateur Dell G3.
Le concept des threads Linux
Qu'est-ce qu'un thread ?
- Une route d'exécution dans un programme est appelée un thread. Une définition plus précise est la suivante : un thread est "une séquence de contrôle au sein d'un processus".
- Chaque processus a au moins un thread d'exécution. "Processus et Thread"
Thread ID
Un ensemble de registres : IP, PSW, pointeur de pilestackerrno
état du signal- priorité
-
-
-
- La différence entre fork et créer un nouveau fil
-
-
- Quand un processus exécute un fork Lorsqu'il est appelé, une nouvelle copie du processus sera créée. Le nouveau processus aura ses propres variables et son propre PID. Le temps d'exécution de ce nouveau processus est indépendant ; il s'exécute presque entièrement indépendamment du processus qui l'a créé.
- Lors de la création d'un nouveau thread dans un processus, le nouveau processus d'exécution aura sa propre pile (et donc ses propres variables locales), mais il partagera des variables globales, des descripteurs de fichiers et des gestionnaires de signaux avec son créateur et son répertoire de travail actuel. statut.
Avantages des threads
Le coût de création d'un nouveau thread est bien inférieur à celui de la création d'un nouveau processus
Par rapport au basculement entre les processus, le basculement entre les threads nécessite beaucoup moins de travail effectué par le système d'exploitation- Les threads occupent beaucoup moins de ressources que les processus
- Peut utiliser pleinement le nombre parallèle de multiprocesseurs
En attendant la fin des opérations d'E/S lentes, le programme peut effectuer d'autres tâches informatiques Applications gourmandes en ressources informatiques, afin pour fonctionner sur des systèmes multiprocesseurs, décomposer les calculs en plusieurs threads pour implémenter des applications gourmandes en E/S, afin d'améliorer le système, chevaucher les opérations d'E/S. Les threads peuvent attendre différentes opérations d'E/S en même temps
- Inconvénients des threads
-
- Perte de performances
- Un thread à forte intensité de calcul qui est rarement bloqué par des événements externes ne peut souvent pas partager le même processeur avec d'autres fils. Si le nombre de threads gourmands en calcul dépasse le nombre de processeurs disponibles, il peut y avoir une perte de performances importante, la perte de performances faisant référence à l'ajout d'une surcharge de synchronisation et de planification supplémentaire, tandis que les ressources disponibles restent inchangées.
- Robustesse réduite
- L'écriture multi-thread nécessite une considération plus complète et approfondie. Dans un programme multi-thread, il existe une forte possibilité de problèmes causés par de légers écarts dans l'allocation du temps ou le partage de variables qui ne doivent pas être partagées. En d’autres termes, il y a un manque de protection entre les threads.
- Manque de contrôle d'accès
Le processus est la granularité de base du contrôle d'accès. L'appel de certaines fonctions du système d'exploitation dans un seul thread affectera l'ensemble du processus. La difficulté de programmation augmenteL'écriture et le débogage d'un programme multithread sont beaucoup plus difficiles qu'un programme monothread
-
- Gamme de compétition de planification de threads
-
- Le système d'exploitation fournit différents modèles pour planifier les threads créés par candidatures. La principale différence de temps entre ces modèles est la suivante : lors d'une compétition pour les ressources système (en particulier le temps CPU), la portée de conflit de planification des threads est différente
- Portée de conflit de processus : chaque thread est dans le même processus. Rivaliser pour le "temps CPU planifié" (mais pas directement en concurrence avec les threads d’autres processus).
- Portée de conflit du système : les threads sont directement en concurrence avec d'autres threads dans la "portée du système".
-
- Recommandations associées : "
Tutoriel vidéo Linux
"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!