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
Problembeschreibung 1. Datenbank der Sammelstelle...
Der Dokumentmodus verfügt über die folgenden zwei ...
In diesem Artikel wird der Unterschied zwischen P...
Code kopieren Der Code lautet wie folgt: <!DOC...
Inhaltsverzeichnis MySQL-Indexoptimierung – Pagin...
Im Allgemeinen verwenden wir nach dem Start des C...
Vorwort: Ich habe vor Kurzem begonnen, den Aufbau...
Inhaltsverzeichnis 1. Hintergrund 2. Bedienungssc...
1 Anforderungen im Überblick Die Daten mehrerer T...
Im vorherigen Artikel habe ich beschrieben, wie s...
Der größte Engpass bei der Verwendung von Zabbix ...
Verwenden Sie den folgenden Befehl, um zu überprü...
MySQL-Datenbanktabellen können Indizes erstellen,...
1. Integrierte Funktionen 1. Mathematische Funkti...
1. Es muss die InnoDB-Speicher-Engine verwendet w...