Pthread_exit 3 c Funktion

Pthread_exit 3 c Funktion
„Möglicherweise haben Sie viele POSIX -C -Funktionen durchlaufen, während Sie ein Linux -Betriebssystem verwenden. Die Funktion pThread_exit () ist eine dieser POSIX -Funktionen. Der pthread_exit () wird verwendet, um die Ausführung des aufrufenden Threads zu beenden. Der aufrufende Thread wird mit der Funktion pThread_exit () beendet und seine Ausführung unter Verwendung der Funktion pThread_join () ausgesetzt, bis der Ziel -Thread seine Ausführung abgeschlossen hat. Daher beendet es den aufrufenden Thread und sendet Status an einen beliebigen Thread, der die Thread -ID des Terminierungs -Threads verwendet, um pThread_join () aufzurufen. In diesem Tutorial werden wir uns die Verwendung der PThread_kill -Funktion in C ansehen.”

Erstens müssen Sie sich vom Linux -System anmelden und sein Terminal starten. Erstellen Sie in der Shell eine C -Datei mit dem VIM -Editor und nennen Sie es pthread_kill.C. Wenn es im VIM -Editor im Einfügemodus geöffnet wird, schreiben Sie die folgenden Codezeilen darin.

Die essentiellen Header -Dateien werden in die ersten drei Codezeilen integriert, und dann wird der Funktionskopf für die Anzeigemeldungsfunktion, die einen Hohlraumzeiger akzeptiert, deklariert. Erstellen Sie danach eine globale Variable und setzen Sie ihren Wert auf 0. Zwei Variablen vom Typ pthread_t namens Thread_P & Thread_s werden deklariert. PThread_t ist ein Datentyp, mit dem ein Thread in der Hauptfunktion erstellt wurde. Wenn das Programm Funktionsaufrufe für eine Thread -Identifizierung erstellt, nimmt der von der Funktion pThread_create () zurückgegebene Wert an.

Zwei Zeigervariablen vom Zeichenstyp, die zum Speichern der Nachricht für die primären und sekundären Threads verwendet werden, werden in den folgenden Codezeilen definiert. Dann werden zwei Ganzzahlen definiert, mit Werten von 100 bzw. 200. Anschließend haben wir zwei separate Threads erstellt, von denen jeweils die Anzeigemethode verwendet. Senden Sie die individuell generierten Thread -Kenner und Nachrichten separat an jeden Thread. Nach diesem Druck wird die Anweisung aufgerufen, die die Nachricht vor der Beendigung der Threads ist. Wenn wir die Threads beenden oder beenden, wird die gesamte Ausführung ausgesetzt, und es wird keine Ausgabe angezeigt. Die globale Variable wird in der Anzeigemeldungsfunktion durch 1 erhöht.

Sehen Sie sich die verfügbaren Dateien und Ordner im Arbeitsverzeichnis an, indem Sie den Befehl LS in der Befehlszeile des Terminals eingeben.

Geben Sie die unten aufgeführten Befehle ein, um eine Datei zu erstellen, die Thread-bezogene Anweisungen enthält, da sie sich von Standard-Kompilierungsanweisungen unterscheiden. Der Befehl wird mit dem Compiler initiiert, da wir den GCC -Compiler und das Linux -Betriebssystem verwenden. Der -Pthread -Schalter wird dann verwendet. Nach Angabe des Dateinamens mit dem -o -Flag wird die Ausgabedatei mit dem angeforderten Namen erstellt.

Einfach den Befehl eingeben (./phread töten.Out) im Terminal, um die Ausgabedatei auszuführen und die Ergebnisse anzeigen. Nach der vorher -Anweisung wird keine Anweisung ausgeführt, da beide Threads mit der Funktion pThread_exit beendet werden. Sobald der primäre Thread festgelegt wurde, ruft er die Anzeigemethode auf und erhöht den Wert der globalen Variablen von 0 auf 1, der dann angezeigt wird. Ähnlich wird dann ein zweiter Thread aufgerufen, wodurch der Wert der globalen Variablen nach einem Inkrement angezeigt wird, was zu einem Wert von 2 führt.

Erstellen Sie nun eine weitere C -Programmiercodedatei mit VIM -Editor und schreiben Sie den Code hinein. Der Dateiname ist pThread_exit.C.

Die wichtigen Header -Dateien sind in den ersten beiden Zeilen der Codedatei aufgenommen. Daraus wurde eine globale Variable deklariert und ihr Wert auf 0 gesetzt. Die Anzeigefunktion wird dann geschrieben, und es wird ein Parameter vom Typ void Zeigertyp gegeben. Alle Threads, die wir in unserer Hauptfunktion erstellen, führen diesen Code aus. Der Argumentwert der Thread -ID -Variablen wird in der ersten Zeile der Funktion gespeichert. Nachdem nun eine statische Variable definiert und auf 0 festgelegt wurde, wird ihr Wert innerhalb der Funktion geändert. Dann haben wir die Thread -ID und die Werte der globalen und statischen Variablen nach dem Inkrementieren gedruckt.

Verwenden Sie den GCC -Compiler, um den C -Code mit der Option -phread -Option zu kompilieren und dann die Ausgabe in der PThread -Ausfahrt zu speichern.aus der Datei. Nur ein Thread kann seine Ausführung vervollständigen, da wir dieselbe Thread -ID verwenden, um mehrere Threads zu generieren und dann den Thread in der Schleife zu beenden.

Hier ist die Ausgabe der Datei nach erfolgreicher Zusammenstellung. Dies bedeutet, dass, wenn ein Thread mithilfe einer Exit -Anweisung beendet wird, kein anderer Thread ausgeführt wird.

Jeder Thread wird korrekt erstellt und ausgeführt, wenn wir den Code geringfügig ändern, indem wir die Exit -Anweisung ändern und die Zeile außerhalb der Schleife verschieben. Dies ist der Code, der im Snippet unten angegeben ist:

Nach der Kompilierung und beim Ausführen der Ausgabedatei wird die folgende Ausgabe generiert, die zeigt, dass alle Threads ihre Ausführung abgeschlossen haben. Die Ausgabe zeigt, dass die Werte globaler und statischer Variablen für alle Threads gleich sind, was bedeutet, dass dieselbe Thread -Referenz verwendet wird.

Ändern wir unseren Code ein bisschen mehr und kommentieren Sie die Anweisung pThread_exit am Ende der Anzeigefunktion. Hier ist der Bildschirm des Codes:

Hier ist der Ausgangs -Screenshot des obigen Codes. Nur drei Themen werden ausgeführt; Sie können die Werte der globalen und statischen Variablen sehen. Die zweite und dritte Themen haben die gleichen Werte für beide.

Abschluss

In diesem Artikel geht es um die Verwendung der Funktion pThread_kill in C, um die Verarbeitung eines Anrufs in einem Programm zu beenden. Der Beendigungsprozess der Aufruffunktion muss jedoch für eine Weile die Verwendung der pthread_join () -Methode gestoppt werden, bis die Zielmethode ist vollendet. Sie können die oben gezeigten einfachen Beispiele verwenden, um ein klares Verständnis zu erhalten.