Swoole Coroutine gehört zu Threads. Coroutinen werden in Threads ausgeführt. Die zugrunde liegende Implementierung der Coroutinen ist Single-Threaded, und Threads werden vom Betriebssystem für die parallele Ausführung geplant.
Die Betriebsumgebung dieses Tutorials: Windows 10-System, Swoole 4-Version, DELL G3-Computer
Was ist ein Prozess?
Ein Prozess ist ein Programm, das im System ausgeführt wird. Sobald das Programm ausgeführt wird, ist es ein Prozess.
Ein Prozess kann als Instanz der Programmausführung betrachtet werden.
Tags: Ein Prozess kann nicht auf die Variablen und Datenstrukturen eines anderen Prozesses zugreifen. Wenn Sie möchten, dass ein Prozess auf die Ressourcen eines anderen Prozesses zugreift, müssen Sie die Kommunikation zwischen Prozessen wie Pipes, Dateien, Sockets usw. verwenden.
Was ist ein Thread?
Threads gehören zu Prozessen und sind die Ausführer von Programmen.
Ein Prozess enthält mindestens einen Hauptthread und kann auch mehrere Unterthreads haben. Jeder Thread nutzt den Stapelspeicher des Prozesses, zu dem er gehört.
Ein Thread ist eine Entität eines Prozesses und ein Ausführungspfad des Prozesses.
Tags: Mehrere Threads im selben Prozess teilen sich einen Teil des Status, und mehrere Threads können denselben Speicher lesen und schreiben.
Was ist eine Coroutine?
Coroutine ist ein bestimmter Planungsmechanismus innerhalb des Programms.
Coroutine ist ein leichter Thread. Das Erstellen, Schalten, Anhalten und Zerstören von Coroutine ist sehr gering.
Coroutinen gehören zu Threads und Coroutinen werden in Threads ausgeführt.
Die Planung von Coroutinen wird vom Benutzer manuell umgeschaltet und wird daher auch als User-Space-Thread bezeichnet.
Die Planungsstrategie von Coroutinen ist: kollaborative Planung.
Der Unterschied zwischen Coroutinen und Threads:
Swooles Coroutinen sind in der zugrunde liegenden Implementierung Single-Threaded, sodass nur eine Coroutine gleichzeitig arbeitet und die Ausführung der Coroutinen seriell erfolgt. 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.
Anwendbare Szenarien für Coroutinen:
Dienste mit hoher Parallelität, wie Flash-Sale-Systeme, Hochleistungs-API-Schnittstellen und RPC-Server, erhöhen die Fehlertoleranzrate von Diensten erheblich fail, nein Führt zum Absturz des gesamten Dienstes.
Crawler können sehr große Parallelitätsfähigkeiten erreichen und die Bandbreite selbst in einer sehr langsamen Netzwerkumgebung effizient nutzen.
Instant-Messaging-Dienste wie IM-Chat, Spieleserver, Internet der Dinge, Nachrichtenserver usw. können sicherstellen, dass die Nachrichtenkommunikation völlig blockierungsfrei erfolgt und jedes Nachrichtenpaket sofort verarbeitet werden kann.
Empfohlenes Lernen: Swoole-Tutorial
Das obige ist der detaillierte Inhalt vonGehört die Swoole-Coroutine zu einem Prozess oder einem Thread?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!