PHP unterstützt standardmäßig kein Multithreading. Lassen Sie dessen Parameter die Thread-sichere Methode zum Kompilieren von PHP angeben, um Multithreading zu unterstützen.
Thread ist die kleinste Einheit für die Berechnungsplanung im Betriebssystem. Es wird in den Prozess eingebunden und ist die eigentliche Bedieneinheit im Prozess. Was ich heute weitergeben werde, ist Thread-Wissen über PHP, das einen gewissen Referenzwert hat. Ich hoffe, es wird für alle hilfreich sein
[Empfohlener Kurs: PHP-Tutorial]
Verständnis von Multithreading
Das sogenannte Multi- Threading erfolgt in einem Prozess. Mehrere Threads können gleichzeitig ausgeführt werden, und jeder Thread kann unterschiedliche Aufgaben parallel ausführen. Multithreading verbessert die Ausführungseffizienz des Programms erheblich. Bei einem Multithread ist die Wahrscheinlichkeit, dass er vom Betriebssystem geplant wird, größer als bei einem einzelnen Thread. Und effizienter. Mehrere Threads können gleichzeitig auf mehreren Kernen einer Multi-Core-CPU ausgeführt werden, was die Betriebseffizienz beschleunigt. Und die Kommunikation zwischen Threads ist einfacher.
PHP-Multithreading
Standardmäßig unterstützt PHP kein Multithreading, Sie müssen Erweiterungen installieren, die derzeit häufig verwendet werden umfassen pcnlt, POSIX und pthreads, aber die am häufigsten verwendete ist die pthreads-Erweiterung, die Parameter verwendet, um eine thread-sichere Methode zum Kompilieren von PHP zur Unterstützung von Multithreading anzugeben.
Bevor Sie Threads verwenden, müssen Sie zunächst das Problem der Thread-Sicherheit berücksichtigen. Thread-Sicherheit bezieht sich auf die Fähigkeit, gemeinsam genutzte Variablen zwischen mehreren Threads korrekt zu verarbeiten, wenn eine Funktion oder Funktionsbibliothek in einer Multithread-Umgebung aufgerufen wird. damit die Funktionen des Programms korrekt ausgeführt werden können
Beispiel:
Aufgrund der Existenz von Shared-Variablen in Multi-Threads können folgende Probleme auftreten:
存在一个全局数组:$arr = array('a'); A 线程获取数组长度为1; B 线程获取数组长度为1; A 线程pop出数组元素 $a = array_pop($arr); $a = 'a'; B 线程也pop数组元素 $b = array_pop($arr); $a = null; 但是此时B线程内就出现了错误事件,虽设置了数组长度大于0,但是没有 pop值来
PHP realisiert Thread-Sicherheit
PHP realisiert Thread-Sicherheit hauptsächlich durch den TSRM-Mechanismus. Durch diesen Mechanismus können globale Variablen und statische Variablen isoliert und eine Kopie globaler Variablen und statischer Variablen erstellt werden wird in jeden Thread kopiert. Jeder Thread verwendet eine Sicherung des Hauptthreads. Dies vermeidet Variablenkonflikte und verursacht keine Thread-Sicherheitsprobleme.
Die Kapselung von Multithreading durch PHP gewährleistet Thread-Sicherheit, sodass Entwickler keine Lese- und Schreibkonflikte berücksichtigen müssen, was den Code sicherer macht. Dies hat jedoch auch Nachteile. Wenn beispielsweise der Sub-Thread gestartet wird, kann der Haupt-Thread die laufenden Details des Sub-Threads nicht mehr anpassen und verliert die Fähigkeit, Nachrichten zu übermitteln.
Zusammenfassung : Das ist alles für diesen Artikel. Ich hoffe, er ist für alle hilfreich.
Das obige ist der detaillierte Inhalt vonWas bedeutet PHP-Multithreading?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!