Heim > Backend-Entwicklung > PHP-Tutorial > Ausführliche Erklärung des kooperativen Multitaskings in PHP

Ausführliche Erklärung des kooperativen Multitaskings in PHP

小云云
Freigeben: 2023-03-21 17:36:02
Original
1538 Leute haben es durchsucht

Eine der besseren neuen Funktionen von PHP5.5 ist die Unterstützung für Generatoren und Coroutinen. Generatoren werden bereits ausführlich in der PHP-Dokumentation und verschiedenen anderen Blogbeiträgen (wie diesem oder diesem) behandelt. Coroutinen haben relativ wenig Beachtung gefunden. Obwohl Coroutinen sehr leistungsstarke Funktionen haben, sind sie schwer zu kennen und schwer zu erklären.

Generator

Die grundlegendste Idee eines Generators ist auch, dass der Rückgabewert dieser Funktion nacheinander ausgegeben wird, anstatt nur einen einzelnen zurückzugeben Wert. Mit anderen Worten: Generatoren erleichtern Ihnen die Implementierung der Iterator-Schnittstelle. Das Folgende ist eine einfache Erklärung zur Implementierung einer xrange-Funktion:

b422b63ae01fa21ad02819b3c43123ea

结束语

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

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

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung des kooperativen Multitaskings in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage