Maison  >  Article  >  cadre php  >  Que peut faire la coroutine swoole ?

Que peut faire la coroutine swoole ?

WBOY
WBOYoriginal
2022-03-14 16:36:392432parcourir

Dans swoole, les coroutines peuvent être utilisées pour les services à haute concurrence. Le taux de tolérance aux pannes des services utilisant le mode coroutine sera considérablement augmenté. La défaillance de certaines interfaces ne provoquera pas de pannes de service. ce qui peut garantir une communication totalement non bloquante, chaque message peut être traité instantanément.

Que peut faire la coroutine swoole ?

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

Que peut faire la coroutine swoole

Scénarios applicables de la coroutine

Services à haute concurrence, tels que le système de vente flash , API hautes performances En utilisant le mode coroutine pour les interfaces et les serveurs RPC, le taux de tolérance aux pannes du service sera considérablement augmenté. Lorsque certaines interfaces échouent, cela n'entraînera pas l'effondrement de l'ensemble du service.

Le robot d'exploration 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.

Qu'est-ce qu'une coroutine ?

Coroutine (Coroutine) est également appelée un thread en mode utilisateur, qui passe par collaboration plutôt que par préemption. Par rapport aux processus ou aux threads, toutes les opérations des coroutines peuvent être effectuées en mode utilisateur et les coûts de création et de changement sont inférieurs. Une coroutine est un complément à un processus, ou une relation complémentaire.

Pour comprendre ce qu'est un "thread en mode utilisateur", vous devez d'abord comprendre ce qu'est un "thread en mode noyau". Les threads d'état du noyau sont planifiés par le système d'exploitation. Lors du changement de contexte de thread, vous devez d'abord enregistrer le contexte du thread précédent, puis exécuter le thread suivant lorsque les conditions sont remplies, revenir au thread précédent et restaurer le contexte. Il en va de même pour les coroutines, sauf que les threads en mode utilisateur ne sont pas planifiés par le système d'exploitation, mais par les programmeurs, qui sont ce qu'on appelle les threads en mode utilisateur.

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 fonctionnant 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.

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
Article précédent:Swoole est-il multithread ?Article suivant:Swoole est-il multithread ?