Heim  >  Artikel  >  PHP-Framework  >  So implementieren Sie Swoole-Coroutine

So implementieren Sie Swoole-Coroutine

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼Original
2019-12-10 16:20:022750Durchsuche

So implementieren Sie Swoole-Coroutine

Swoole4 bietet ein leistungsstarkes CSP-Coroutine-Programmiermodell für die PHP-Sprache. Benutzer können über die Go-Funktion eine Coroutine erstellen, um den Effekt der gleichzeitigen Ausführung zu erzielen, wie im folgenden Code gezeigt:

<?php
//Co::sleep()是Swoole提供的API,并不会阻塞当前进程,只会阻塞协程触发协程切换。
go(function (){
    Co::sleep(1);
    echo "a";
});
go(function (){
    Co::sleep(2);
    echo "b";
});
echo "c";
//输出结果:cab
//程序总执行时间2秒

Tatsächlich wurde das Multi-Coroutine-Programmiermodell vor Swoole4 implementiert. Wenn die Coroutine erstellt, umgeschaltet und beendet wird, kann der PHP-Stack entsprechend betrieben werden (den PHP-Stack erstellen, wechseln und recyceln).

Die Coroutine-Implementierung kann die PHP-Syntax derzeit nicht perfekt unterstützen. Der Hauptgrund dafür ist, dass die C-Stack-Informationen nicht gespeichert werden. (APIs, die innerhalb der VM oder durch einige Erweiterungen bereitgestellt werden, werden durch C-Funktionen implementiert. Wenn beim Aufruf dieser Funktionen ein Coroutine-Switching auftritt, wie soll dann mit dem C-Stack umgegangen werden?)

Swoole4 hat einen neuen C-Stack hinzugefügt Management: Wenn die Coroutine erstellt, gewechselt und beendet wird, wird sie von der Erstellung, dem Wechsel und dem Recycling des C-Stacks begleitet.

Der Swoole4-Coroutine-Implementierungsplan ist in der folgenden Abbildung dargestellt:

So implementieren Sie Swoole-Coroutine

Unter ihnen:

·Die API-Schicht stellt Coroutinen-bezogene Funktionen für Benutzer bereit. Beispielsweise wird die Funktion go() zum Erstellen von Coroutinen verwendet ; Co::resume () kann die Ausführung einer Coroutine fortsetzen;

·Swoole4-Coroutine muss den C-Stack und den PHP-Stack gleichzeitig verwalten. Coroutine wird verwendet, um den C-Stack zu verwalten, und PHPCoroutine wird verwendet, um den PHP-Stack zu verwalten. Coroutine (), yield () und resume () implementieren die Erstellung sowie das Ein- und Auslagern des c stack; create_func(), on_yield(), on_resume() realisieren die Erstellung und den Austausch des PHP-Stacks.

· boost.context-Bibliothek bei der Verwaltung des C-Stacks. Die Funktionen make_fcontext() und jump_fcontext() sind beide in Assemblersprache geschrieben und implementiert 🎜>

Swoole4 kapselt einfach boost.context, nämlich Context Layer, Context(), SwapIn() und SwapOut()

entspricht der Erstellung und dem Ein- und Auslagern des C-Stacks. Die chinesische PHP-Website bietet eine große Anzahl kostenloser Swoole-Einführungs-Tutorials

, die jeder gerne lernen kann!

Das obige ist der detaillierte Inhalt vonSo implementieren Sie Swoole-Coroutine. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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
Vorheriger Artikel:Ist Swoole in c geschrieben?Nächster Artikel:Ist Swoole in c geschrieben?