Frage:Bedenken Sie: Wenn ein Programm nur einen Hauptthread hat und fork aufgerufen wird, hat der von fork erstellte untergeordnete Prozess auch nur einen Thread. Was wäre, wenn wir Fork in ein Multithread-Programm einfügen würden? Probieren wir es aus: Fall (1) Fork vor dem Erstellen eines Child-ThreadsCode: #include <stdio.h> #include <pthread.h> #include <unistd.h> void*pthread_fun(void*arg) { printf("Spaß = %d\n", getpid()); pthread_exit(NULL); } int main() { Gabel(); pthread_t-ID; pthread_create(&id, NULL, pthread_fun, NULL); printf("main_pid = %d\n", getpid()); pthread_join(id, NULL); gebe 0 zurück; } Ergebnis: Der gegabelte Kindprozess wird auch seinen eigenen Kindthread erstellen ( Fall (2) Fork nach dem Erstellen eines Child-ThreadsCode: #include <stdio.h> #include <pthread.h> #include <unistd.h> void*pthread_fun(void*arg) { printf("Spaß = %d\n", getpid()); pthread_exit(NULL); } int main() { pthread_t-ID; pthread_create(&id, NULL, pthread_fun, NULL); Gabel(); printf("main_pid = %d\n", getpid()); pthread_join(id, NULL); gebe 0 zurück; } Ergebnis: Nach dem Erstellen eines untergeordneten Threads wird ein untergeordneter Prozess erstellt. Zu diesem Zeitpunkt führt der untergeordnete Fork-Prozess nur den Code nach dem Fork aus ( Fall (3) Fork im untergeordneten ThreadCode: #include <stdio.h> #include <pthread.h> #include <unistd.h> void*pthread_fun(void*arg) { Gabel(); printf("Spaß = %d\n", getpid()); pthread_exit(NULL); } int main() { pthread_t-ID; pthread_create(&id, NULL, pthread_fun, NULL); printf("main_pid = %d\n", getpid()); pthread_join(id, NULL); gebe 0 zurück; } Ergebnis: abschließend:In welchem Thread handelt es sich um eine Fork? Der nach der Fork erstellte untergeordnete Prozess verwendet diesen Thread als Hauptthread und führt den Code nach diesem Thread aus. Dies ist das Ende dieses Artikels über Forks in Multithreading unter Linux. Weitere relevante Inhalte zu Forks in Linux Multithreading finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Was sind Inline-Elemente und Blockelemente?
>>: Detaillierte Erklärung der allgemeinen Verwendung von Pseudoklassen vor und nach in CSS3
Verzögertes Laden (Lazy Loading) und Vorladen sin...
1. HTML-Schriftfarbeneinstellung In HTML verwende...
In diesem Artikelbeispiel wird der spezifische Ja...
Übersicht zur Netzwerkkommunikation Bei der Entwi...
Ich möchte eine Situation erreichen, in der die B...
In diesem Artikel erfahren Sie den spezifischen C...
Inhaltsverzeichnis Vorwort Text 1. Globale Regist...
Wie können Sie das Lamaging von Routen vergessen,...
Der img-Tag führt das Bild ein Da React die Seite...
In diesem Artikelbeispiel wird der spezifische Co...
Methode 1 Code kopieren Der Code lautet wie folgt:...
In Schreibstilen können wir diese Situation oft s...
Inhaltsverzeichnis Props-Vergleich von Klassenkom...
Verbindungsabfrage: Es ist das Ergebnis der paarw...
Das Einrichten des Fernzugriffs in mysql5.7 funkt...