Der POSIX -Standard bietet uns die Möglichkeit, Multithread -Programme in der C -Sprache zu entwickeln. Diese Programmierungstechnik besteht aus der Verwendung der "PThread" -Bibliothek, um einen oder mehrere Subprozess -Threads zu öffnen, die parallel zum Hauptprozess ausgeführt werden.
Die Implementierung von Threads bringt große Vorteile für das endgültige Programm, da es die Ausführungszeiten beschleunigt, indem mehrere Aufgaben gleichzeitig ausgeführt werden, besser strukturiert sein und die Systemressourcen besser nutzen können.
Ein Thread wird mit der Funktion pThread_ create () erstellt. Sobald diese Funktion aufgerufen wird, wird der Thread parallel zum Hauptprozess ausgeführt. Wenn diese Funktion aufgerufen wird, gibt sie die Thread -ID im Ausgangsargument -Thread zurück. Diese Kennung wird verwendet, um auf den erstellten Thread zu verweisen, wenn Sie die Thread -Verwaltungsfunktionen wie pthread_join () oder pThread_cancel () verwenden.
In diesem Linux -Hinweis -Artikel erfahren Sie, wie Sie die Funktion pThread_cancel () verwenden, einer der C -Thread -Verwaltungsfunktionen, mit der Sie einen bereits ausgeführten Thread abbrechen können.
Syntax der Funktion pThread_cancel () in der C -Sprache
int pthread_cancel (pthread_t thread);Beschreibung der Funktion pThread_cancel () in der C -Sprache
Die Funktion pThread_cancel () sendet eine Anforderung an das System, um den Thread abzubrechen.
Der Aufruf zur Funktion pThread_cancel () bedeutet nicht so eine sofortige Beendigung des Threads, sondern eine Anfrage dazu. Ob ein Thread nach dem Aufrufen dieser Funktion beendet wird. Wenn ein Thread mit seinen Standardattributen erstellt wird, kann er abgebrochen werden.
Die Abbrechen -Attribute eines Threads können mit der Funktion pThread_setCancelstate () abgerufen werden und mit pThread_setCanceltType () festgelegt werden.
Wenn die Funktion pThread_cancel () erfolgreich ist, gibt sie 0 als Ergebnis zurück. Wenn es fehlschlägt, gibt es einen Wert ungleich Null zurück.
Die Funktion pThread_cancel () aus der PThread -Bibliothek ist im „Thread“ definiert.H ”Kopfball. Um dies und die anderen Funktionen des Thread -Managements zu verwenden, müssen Sie diesen Header wie folgt in Ihr Programm aufnehmen:
#enthaltenDie Programme, die die Thread -Verwaltungsfunktionen verwenden. Andernfalls treten die Fehler auf.
Das Folgende ist ein spezieller Abschnitt, in dem erklärt wird, wie die Programme, die die Funktionen aus der Threadbibliothek verwenden.
So stornieren Sie einen laufenden Thread mit der Funktion pThread_cancel () in C -Sprache
In diesem Beispiel erstellen wir einen Thread mit der Funktion pThread_create () und stornieren ihn dann in der Mitte der Ausführung mit der Funktion pThread_cancel ()).
Dazu erstellen wir den Thread „Thread_1“, der die Funktion th_function () ausführt, die aus einer für die Schleife mit 10 Zyklen besteht, von der jeweils die druckt "Sekunden vom Init -Thread und die Anzahl der Sekunden verstrichen" Satz in der Befehlskonsole. Danach wird eine Verzögerung von 1 Sekunde eingefügt, um den Zyklus erneut zu wiederholen. Die Ausführungszeit des Threads beträgt also ungefähr 10 Sekunden.
Sobald Thread_1 erstellt und ausgeführt wurde, führen wir eine 5-Sekunden-Verzögerung über die Funktion main () ein und beenden die Subprozess nach der Hälfte der Ausführungszeit. Zum Beenden des Thread. Schauen wir uns nun den Code für dieses Beispiel an:
#enthaltenDas folgende Bild zeigt die Kompilierung und Ausführung des Code. Wie Sie sehen können, wird der Thread mit der Funktion pThread_cancel () in der Mitte der Ausführung oder 5 Sekunden nach dem Start beendet:
In diesem Fall akzeptiert der Thread die Stornierung, da seine Attribute bei der Erstellung standardmäßig festgelegt werden.
Fehler in der Verwendung der Funktion pThread_cancel (): Was sind sie und wie sie identifizieren können?
Die Möglichkeit zu bestimmen, ob beim Aufrufen dieser Funktion ein Fehler auftritt. Das Folgende ist ein Code -Snippet, das diese Methode zur Fehlererkennung verwendet:
if (pthread_cancel (Thread) != 0)Der einzige Fehler, den diese Funktion erzeugen kann, ist derjenige, der als ISRCH im „Errno.H ”Kopfball. Dieser Fehler wird generiert, wenn ein nicht existierender Thread im Eingabeargument der Funktion pThread_cancel () referenziert wird.
Kompilierungsfehler in Programmen mit Threads
Wenn Sie die GCC -Programme kompilieren, die Threads verwenden.
Die häufigste Fehlermeldung, die vom Compiler ausgegeben wird.
Diese Fehler führen häufig dazu, wertvolle Zeit zu verschwenden, indem die Header, die wir in den Code eingefügt haben.
Obwohl die Funktionen, die den Fehler verursachen, in der definiert sind „Phread.H" Header und im Code enthalten. Der Compiler erkennt diese Funktionen nicht, es sei denn.
Sie können in Grün den richtigen Weg sehen, um die PThread -Bibliothek bei der Zusammenstellung von Programmen mit Threads in Folgendes aus der Befehlskonsole aufzurufen:
~ $ GCC -PTHEAD PATH/Dateiname.c -o out_nameWie wir in der folgenden Abbildung sehen können, verschwindet der Fehler, wenn die PThread -Bibliothek während der Zusammenstellung aufgerufen wird:
Abschluss
In diesem Linux -Hinweis -Artikel haben wir Ihnen gezeigt, wie Sie die Funktion pThread_cancel () verwenden, um das System aufzufordern, einen laufenden Thread zu beenden.
Wir haben uns eine theoretische Beschreibung dieser Funktion angesehen und Ihnen ihre Syntax, die Eingangs- und Ausgangsargumente und die Art der Daten gezeigt, die jeder von ihnen akzeptiert. Danach haben wir das implementiert, was wir durch ein praktisches Beispiel mit Code -Snippets und Bildern gelernt haben, in denen wir gesehen haben, wie die Funktion pThread_cancel () in der C -Sprache funktioniert.
Wir haben auch einen speziellen Abschnitt hinzugefügt, in dem wir Ihnen gezeigt haben, wie Sie die Programme, die die Themen und Funktionen aus der PThread -Bibliothek enthalten.