Maison > cadre php > Swoole > le corps du texte

Pourquoi la coroutine swoole est-elle monothread ?

WBOY
Libérer: 2022-03-14 15:46:01
original
2603 Les gens l'ont consulté

Dans swoole, étant donné que la commutation de coroutines est en série, une seule coroutine peut être exécutée au même moment. Lorsqu'une coroutine est en cours d'exécution, les autres coroutines cesseront de fonctionner, donc la coroutine de swoole est basée sur une seule coroutine threadée.

Pourquoi la coroutine swoole est-elle monothread ?

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

Pourquoi la coroutine swoole est-elle monothread

En termes simples, la coroutine est une sorte d'implémentation plus légère implémentée par des programmeurs hébergés dans les threads Nombre de threads légers de collaboration simultanés

À mesure que le nombre de programmeurs augmente, les grands noms continuent de croître de manière explosive. Bien sûr, certaines personnes commencent à penser que les threads ne sont pas faciles à utiliser, alors que devons-nous faire ? il est basé sur le concept de threads. Allez-y et implémentez un ensemble de threads légers qui sont plus légers et mieux adaptés pour tromper les étoiles (en fait, les coroutines ne peuvent pas être complètement considérées comme des threads, car un thread peut avoir plusieurs coroutines)

La différence entre les coroutines et les threads

Essence

État du noyau de thread

État utilisateur de la coroutine

Méthode de planification

La méthode de planification des threads est la planification du système. Les stratégies de planification couramment utilisées incluent la planification en temps partagé et la planification préemptive. ing. Pour parler franchement, la planification des threads est complètement hors de votre contrôle

La méthode de planification des coroutines est la planification collaborative. Elle n'est pas contrôlée par le noyau et est commutée par une planification de politique libre

Comme mentionné ci-dessus, les coroutines sont dans l'utilisateur. mode, donc la planification dite collaborative peut être directement utilisée. Il est entendu qu'il s'agit d'une méthode de planification écrite par des programmeurs, c'est-à-dire que je peux la planifier comme je le souhaite sans être planifiée via le noyau du système.

Introduction à la compréhension de la coroutine de swoole

Puisque nous prévoyons d'avoir une compréhension approfondie de la coroutine de swoole, nous devons connaître le modèle de coroutine de swoole.

La coroutine de Swoole est basée sur un seul thread. On peut comprendre que la commutation des coroutines est en série et qu'une seule coroutine s'exécute en même temps

La coroutine de Swoole est monothread dans l'implémentation sous-jacente, donc une seule coroutine fonctionne en même temps. 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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal