Maison > développement back-end > tutoriel php > Explication détaillée du multitâche coopératif en PHP

Explication détaillée du multitâche coopératif en PHP

小云云
Libérer: 2023-03-21 17:36:02
original
1529 Les gens l'ont consulté

L'une des meilleures nouvelles fonctionnalités de PHP5.5 est la prise en charge des générateurs et des coroutines. Les générateurs sont déjà traités en détail dans la documentation PHP et dans divers autres articles de blog (comme celui-ci ou celui-ci). Les coroutines ont reçu relativement peu d'attention, donc bien que les coroutines aient des fonctions très puissantes, elles sont difficiles à connaître et à expliquer.

Générateur

L'idée la plus fondamentale d'un générateur est également une fonction. La valeur de retour de cette fonction est générée en séquence, plutôt que de simplement renvoyer une seule. valeur. Ou, en d’autres termes, les générateurs vous permettent d’implémenter plus facilement l’interface de l’itérateur. Ce qui suit est une explication simple en implémentant une fonction xrange :

3a3fbbe92825403c59e57a84a6e688d8

结束语

在这篇文章里,我使用多任务协作构建了一个任务调度器,其中包括执行“系统调用”,做非阻塞操作和处理错误。所有这些里真正很酷的事情是任务的结果代码看起来完全同步,甚至任务正在执行大量的异步操作的时候也是这样。如果你打算从套接口读取数据的话,你将不需要传递某个回调函数或者注册一个事件侦听器。相反,你只要书写yield $socket->read()。这儿大部分都是你常常也要编写的,只在它的前面增加yield。

当我第一次听到所有这一切的时候,我发现这个概念完全令人折服,而且正是这个激励我在PHP中实现了它。同时我发现协程真正令人心慌。在令人敬畏的代码和很大一堆代码之间只有单薄的一行,我认为协程正好处在这一行上。讲讲使用上面所述的方法书写异步代码是否真的有益对我来说很难。

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