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
Dieser Artikel wurde aus dem Blog „Usability Count...
System- und Benutzerumgebungsdesign <br />D...
Kein Lazy Loading verwenden importiere Vue von „v...
Kürzlich wurde auf Unternehmensseite gemeldet, da...
Die Ergebnisse sind in Windows- und Linux-Umgebun...
Inhaltsverzeichnis 1. Einleitung 2. Direkte Wiede...
html Code kopieren Der Code lautet wie folgt: <...
Die folgenden Schritte werden alle auf meiner vir...
In diesem Artikel wird der spezifische Code von r...
MySQL ist eine von mehreren Benutzern verwaltete ...
app.js: Startdatei oder Einstiegsdatei package.js...
Die MySQL-Transaktionsunterstützung ist nicht an ...
Inhaltsverzeichnis 1. Erstellen Sie ein Redis-Doc...
Build deaktivieren Partitionsausdrücke unterstütz...
Inhaltsverzeichnis 1.setInterval() 2.setTimeout()...