Maison  >  Article  >  développement back-end  >  Comment faire du multithread en php

Comment faire du multithread en php

(*-*)浩
(*-*)浩original
2019-10-08 09:16:273709parcourir

PHP ne prend pas en charge le multi-threading par défaut. Pour utiliser le multi-threading, vous devez installer l'extension pthread, vous devez utiliser le paramètre --enable-maintainer-zts pour recompiler. PHP. Ce paramètre est spécifié lors de la compilation de PHP. Utiliser la sécurité des threads.

Comment faire du multithread en php

Le multi-threading est un facteur qui rend les programmes agités. Avant d'utiliser le multi-threading, vous devez d'abord considérer les problèmes de sécurité des threads : <.>

Sécurité des threads : La sécurité des threads est un terme en programmation, ce qui signifie que lorsqu'une fonction ou une bibliothèque de fonctions est appelée dans un environnement multithread, elle peut gérer correctement le partage entre plusieurs variables de threads. afin que les fonctions du programme puissent être complétées correctement. (Apprentissage recommandé : Tutoriel vidéo PHP)

Dans le multi-threading traditionnel, étant donné que plusieurs threads partagent des variables, les problèmes suivants peuvent survenir :

Il existe un tableau global $ arr = array('a');;

Un thread obtient la longueur du tableau est de 1;

Le thread B obtient la longueur du tableau est 1;

Un thread apparaît L'élément de tableau $a = array_pop($arr); $a = 'a';;

Le thread B fait également apparaître l'élément de tableau $b = array_pop($arr); 🎜>À ce moment-là, un événement étrange s'est produit dans le thread B. La longueur du tableau était visiblement supérieure à 0, ou rien n'a été sauté ;

Implémentation PHP

Thread. sécurité implémentée par PHP Principalement, le mécanisme TSRM est utilisé pour isoler les variables globales et les variables statiques sont copiées dans chaque thread, évitant ainsi les conflits de variables et il n'y en aura pas. problèmes de sécurité des threads.

L'encapsulation multithread de PHP garantit la sécurité des threads. Les programmeurs n'ont plus besoin d'envisager d'ajouter divers verrous aux variables globales pour éviter les conflits de lecture et d'écriture. Cela réduit également le risque d'erreurs et rend le code écrit plus sécurisé.

Mais le résultat est qu'une fois que le sous-thread commence à s'exécuter, le thread principal ne peut plus ajuster les détails d'exécution du sous-thread, et le thread perd la capacité de transmettre des messages entre les threads via des variables globales pour une certaine mesure.

Dans le même temps, une fois que PHP a activé l'option de sécurité des threads, il y aura des pertes supplémentaires lors de l'utilisation du mécanisme TSRM pour allouer et utiliser des variables. Par conséquent, dans un environnement PHP qui ne nécessite pas de multi-threading, utilisez la version ZTS (non-thread safety) de PHP Très bien.

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