Maison  >  Article  >  cadre php  >  La coroutine swoole appartient-elle à un processus ou à un thread ?

La coroutine swoole appartient-elle à un processus ou à un thread ?

WBOY
WBOYoriginal
2022-03-14 15:37:572752parcourir

La coroutine Swoole appartient aux fils de discussion. Les coroutines sont exécutées dans des threads. Les coroutines sont des threads légers. L'implémentation sous-jacente des coroutines de Swoole est monothread. Une seule coroutine fonctionne en même temps et les threads seront planifiés par le système d'exploitation sur plusieurs processeurs.

La coroutine swoole appartient-elle à un processus ou à un thread ?

L'environnement d'exploitation de ce tutoriel : système Windows 10, version Swoole 4, ordinateur DELL G3

La coroutine swoole est-elle un processus ou un thread

Qu'est-ce qu'un processus ?

Un processus est un programme qui s'exécute dans le système. Une fois le programme exécuté, c'est un processus.

Un processus peut être considéré comme une instance d'exécution d'un programme.

Balises : un processus ne peut pas accéder aux variables et aux structures de données d'un autre processus. Si vous souhaitez qu'un processus accède aux ressources d'un autre processus, vous devez utiliser la communication inter-processus, telle que des tuyaux, des fichiers, des sockets, etc.

Qu'est-ce qu'un fil de discussion ?

Les threads appartiennent aux processus et sont les exécuteurs des programmes.

Un processus contient au moins un thread principal, et peut également avoir plusieurs sous-threads. Chaque thread utilise l'espace de pile du processus auquel il appartient.

Un thread est une entité d'un processus et un chemin d'exécution du processus.

Balises : plusieurs threads dans le même processus partageront une partie de l'état, et plusieurs threads peuvent lire et écrire la même mémoire.

Qu'est-ce qu'une coroutine ?

La coroutine est relativement abstraite. Il s'agit d'un certain mécanisme de planification au sein du programme ;

La coroutine est un thread léger. La création, la commutation, la suspension et la destruction de la coroutine sont toutes des opérations de mémoire et la consommation est très faible.

Les coroutines appartiennent aux threads et les coroutines sont exécutées dans les threads.

La planification des coroutines est modifiée manuellement par l'utilisateur, elle est donc également appelée thread de l'espace utilisateur.

La stratégie de planification des coroutines est la suivante : la planification collaborative.

La différence entre les coroutines et les threads :

Les coroutines de Swoole sont monothread dans l'implémentation sous-jacente, il n'y a donc qu'une seule coroutine qui fonctionne en même temps, et l'exécution des coroutines est en série. Ceci est différent des threads. Plusieurs threads seront planifiés par le système d'exploitation sur plusieurs processeurs pour une exécution parallèle.

Pendant qu'une coroutine est en cours d'exécution, les autres coroutines cesseront de fonctionner. La coroutine actuelle se bloquera lors de l'exécution d'opérations d'E/S bloquantes et le planificateur sous-jacent entrera dans la boucle d'événements. Lorsqu'il y a un événement de fin d'E/S, le planificateur sous-jacent reprend l'exécution de la coroutine correspondant à l'événement.

L'utilisation du CPU multicœur repose toujours sur le mécanisme multi-processus du moteur Swoole.

Scénarios applicables pour les coroutines :

Services à haute concurrence, tels que les systèmes de vente flash, les interfaces API hautes performances et les serveurs RPC. En utilisant le mode coroutine, le taux de tolérance aux pannes des services sera considérablement augmenté lorsque certaines interfaces. échouer, non Provoquant le crash de l'ensemble du service.

Crawler peut atteindre des capacités de concurrence très importantes et peut utiliser efficacement la bande passante même dans un environnement réseau très lent.

Les services de messagerie instantanée, tels que le chat IM, le serveur de jeu, l'Internet des objets, le serveur de messages, etc., peuvent garantir que la communication des messages est totalement non bloquante et que chaque paquet de messages peut être traité instantanément.

Apprentissage recommandé : Tutoriel swoole

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