Maison  >  Article  >  Opération et maintenance  >  Qu'est-ce qu'un fil de discussion sous Linux

Qu'est-ce qu'un fil de discussion sous Linux

青灯夜游
青灯夜游original
2021-11-26 11:02:272705parcourir

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.

Qu'est-ce qu'un fil de discussion sous Linux

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.

Linux 线程的概念和使用

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn