Heim >PHP-Framework >Swoole >Warum ist die Swoole-Coroutine Single-Threaded?
Da die Coroutine-Umschaltung seriell ist, kann nur eine Coroutine gleichzeitig ausgeführt werden. Wenn eine Coroutine ausgeführt wird, funktionieren andere Coroutinen nicht mehr, sodass die Coroutine von Swoole auf einer einzelnen Coroutine basiert.
Die Betriebsumgebung dieses Tutorials: Windows 10-System, Swoole 4-Version, DELL G3-Computer
Einfach ausgedrückt ist Coroutine eine Art und leichtere Implementierung, die von gehosteten Programmierern implementiert wird in Threads Anzahl gleichzeitiger Kollaborations-Lightweight-Threads
Mit zunehmender Anzahl von Programmierern wachsen die großen Namen weiterhin explosionsartig an. Natürlich denken einige Leute, dass Threads nicht einfach zu verwenden sind. Was sollen wir also tun? Es basiert auf dem Konzept von Threads. Implementieren Sie eine Reihe leichter Threads, die leichter sind und besser zum Betrügen von Sternen geeignet sind (tatsächlich können Coroutinen nicht vollständig als Threads betrachtet werden, da ein Thread mehrere Coroutinen haben kann)
Der Unterschied zwischen Coroutinen und Threads
Essence
Thread-Kernel-Status
Coroutine-Benutzerstatus
Planungsmethode
Zu den häufig verwendeten Planungsstrategien gehören Time-Sharing-Planung und präventive Planung. Um es ganz klar auszudrücken: Die Planung von Threads liegt völlig außerhalb Ihrer Kontrolle. Die Planungsmethode von Coroutinen ist die kollaborative Planung. Sie wird nicht vom Kernel gesteuert und durch die kostenlose Richtlinienplanung geändert. Wie oben erwähnt, befinden sich Coroutinen im Benutzermodus Modus, sodass die sogenannte kollaborative Planung direkt verwendet werden kann. Es versteht sich, dass es sich um eine von Programmierern geschriebene Planungsmethode handelt, das heißt, ich kann sie nach Belieben planen, ohne über den Systemkern geplant zu werden.
Einführung in das Verständnis der Swoole-CoroutineDa wir planen, ein tiefgreifendes Verständnis der Swoole-Coroutine zu erlangen, müssen wir das Swoole-Coroutine-Modell kennen. Swooles Coroutine basiert auf einem einzelnen Thread. Es ist verständlich, dass das Umschalten von Coroutinen seriell erfolgt und nur eine Coroutine gleichzeitig ausgeführt wird.
Swooles Coroutine ist in der zugrunde liegenden Implementierung Single-Threaded, sodass nur eine Coroutine gleichzeitig ausgeführt wird seriell. Dies unterscheidet sich von Threads, die vom Betriebssystem für mehrere CPUs zur parallelen Ausführung geplant werden.
Während eine Coroutine ausgeführt wird, funktionieren andere Coroutinen nicht mehr. Die aktuelle Coroutine bleibt hängen, wenn blockierende E/A-Vorgänge ausgeführt werden, und der zugrunde liegende Scheduler tritt in die Ereignisschleife ein. Wenn ein E/A-Abschlussereignis vorliegt, nimmt der zugrunde liegende Scheduler die Ausführung der dem Ereignis entsprechenden Coroutine wieder auf.
Die Nutzung von CPU-Multi-Core basiert immer noch auf dem Multiprozessmechanismus der Swoole-Engine.
Empfohlenes Lernen:
Swoole-TutorialDas obige ist der detaillierte Inhalt vonWarum ist die Swoole-Coroutine Single-Threaded?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!