Comment implémenter la coroutine Swoole
Dec 10, 2019 pm 04:20 PMSwoole4 fournit un puissant modèle de programmation de coroutine CSP pour le langage PHP. Les utilisateurs peuvent créer une coroutine via la fonction go pour obtenir l'effet d'exécution simultanée, comme indiqué dans le code suivant :
<?php //Co::sleep()是Swoole提供的API,并不会阻塞当前进程,只会阻塞协程触发协程切换。 go(function (){ Co::sleep(1); echo "a"; }); go(function (){ Co::sleep(2); echo "b"; }); echo "c"; //输出结果:cab //程序总执行时间2秒
En fait, le modèle de programmation multi-coroutine a été implémenté avant Swoole4. Lorsque la coroutine est créée, commutée et terminée, la pile php peut être utilisée en conséquence (créer, changer et recycler la pile php).
L'implémentation de la coroutine à l'heure actuelle ne peut pas parfaitement prendre en charge la syntaxe PHP. La raison fondamentale est que les informations de la pile C ne sont pas enregistrées. (Les API fournies dans la machine virtuelle ou par certaines extensions sont implémentées via des fonctions c. Si un changement de coroutine se produit lors de l'appel de ces fonctions, comment la pile c doit-elle être gérée ?)
Swoole4 a ajouté une nouvelle pile c Gestion, lorsque la coroutine est créée, commutée et terminée, elle s'accompagnera de la création, de la commutation et du recyclage de la pile c.
Le plan de mise en œuvre de la coroutine Swoole4 est présenté dans la figure ci-dessous :
Parmi eux :
·La couche API fournit des fonctions liées à la coroutine pour les utilisateurs. Par exemple, la fonction go() est utilisée pour créer des coroutines Co::yield() oblige la coroutine actuelle à abandonner le CPU ; ; Co::resume () peut reprendre l'exécution d'une coroutine
·La coroutine Swoole4 doit gérer la pile c et la pile php en même temps. Coroutine est utilisé pour gérer la pile c, et PHPCoroutine est utilisé. Il est utilisé pour gérer la pile php parmi eux, Coroutine(), rendement() et reprendre() implémentent la création, l'échange et l'échange du fichier ; c stack; create_func(), on_yield(), on_resume() réalisent la création et l'échange de la pile php Out
·Swoole4 utilise le bibliothèque boost.context lors de la gestion de la pile c. Les fonctions make_fcontext() et jump_fcontext() sont toutes deux écrites en langage assembleur et implémentées. La création et le changement de contexte de la pile c; 🎜>
Swoole4 encapsule simplement boost.context, à savoir la couche de contexte, Context(), SwapIn() et SwapOut()correspond à la création et à l'échange dans et hors de la pile c. Le site Web PHP chinois propose un grand nombre de tutoriels d'introduction à Swoole
gratuits, tout le monde est invité à apprendre !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!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Comment mettre en œuvre la double connexion WeChat sur les téléphones mobiles Huawei ?

Comment implémenter la fonction de clonage WeChat sur les téléphones mobiles Huawei

La relation parent-enfant entre les fonctions golang et goroutine

Lequel est le meilleur, Swoole ou Workerman ?

Comment utiliser la coroutine Swoole dans Laravel

Application de la concurrence et des coroutines dans la conception de l'API Golang

Lequel a les meilleures performances, swoole ou java ?

Comment swoole_process permet-il aux utilisateurs de changer ?
