La partie que les threads d'un même processus ne partagent pas est la pile du thread.
L'environnement partagé par les threads comprend : les segments de code du processus, les données publiques du processus (en utilisant ces données partagées, les threads peuvent facilement communiquer entre eux), les descripteurs de fichiers ouverts par le processus et les signaux. processeur, le répertoire actuel du processus, ainsi que l'ID utilisateur du processus et l'ID du groupe de processus.
Bien que les processus aient de nombreux points communs, ils ont aussi leur propre personnalité. Avec ces personnalités, les threads peuvent atteindre la concurrence. Ces caractéristiques incluent :
1. ID de fil
Chaque fil a son propre ID de fil, qui est unique dans ce processus. Les processus l'utilisent pour identifier les threads.
2. Enregistrez la valeur du groupe
Étant donné que les threads s'exécutent simultanément, chaque thread a ses propres indices d'exécution différents lors du passage d'un thread à un autre. Lorsque , l'état de l'ensemble de registres du thread d'origine doit être enregistré afin que le thread puisse être restauré lors d'une nouvelle commutation ultérieure.
3. Pile de threads
La pile est nécessaire pour garantir que le thread s'exécute de manière indépendante. Les fonctions de thread peuvent appeler des fonctions, et les fonctions appelées peuvent être imbriquées couche par couche, le thread doit donc avoir sa propre pile de fonctions afin que l'appel de fonction puisse être exécuté normalement sans être affecté par d'autres threads.
4. Code de retour d'erreur
Comme de nombreux threads s'exécutent dans le même processus en même temps, il est possible qu'un certain thread définisse la valeur du numéro d'erreur après avoir créé un système. appeler, et dans ce processus Le thread n'a pas encore traité cette erreur, et un autre thread est mis en service par le planificateur à ce moment, la valeur de l'erreur peut donc être modifiée. Par conséquent, différents threads doivent avoir leurs propres variables de code de retour d’erreur.
5. Code de masquage du signal du thread
Étant donné que chaque thread s'intéresse à des signaux différents, le code de masquage du signal du thread doit être géré par le thread lui-même. Mais tous les threads partagent le même gestionnaire de signal.
6. Priorité du thread
Étant donné que les threads doivent être planifiés comme les processus, il doit y avoir des paramètres disponibles pour la planification. Ce paramètre est la priorité du thread.
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!