POSIX -Thread mit C -Programmierung

POSIX -Thread mit C -Programmierung
Ein Thread ist eine kleine Instanz, die in einem Prozess ausgeführt wird. Themen kombinieren zusammen, um einen Prozess zu erstellen, und sie haben einige Eigenschaften des Prozesses. Daher gelten sie als leichte Prozesse. Thread ist nicht unabhängig, genau wie ein Prozess. Vielmehr arbeiten sie zusammen, um einen Prozess zu kompilieren und zu erstellen. Wie bei einem Prozess hat auch ein Thread auch einen eigenen PC (Programmschalter) und ein bestimmtes Register zusammen mit dem Stack Space.

POSIX -Thread:

In Linux -Plattformen die C- und C ++ - Sprachen pthread Standard -API für alle Arten von threadbezogenen Funktionen. Es ist auch als POSIX -Thread bekannt, mit dem Benutzer viele Threads für gleichzeitige Prozesse erstellen können, um zu fließen. Es wird am besten in Multi-Core-Systemen oder -prozessoren verwendet, um Threads im Kernel zu implementieren, um das System zu erreichen.

Implementierung:

Es ist notwendig, dieses PThread aufzunehmen.H Header -Datei im Skript anfangs. Dies hilft bei der Verwendung der Funktionen der PThreads -Bibliothek. Um die C -Datei auszuführen, die folgenden Befehle

$ cc -Thread -Datei.C

ODER

$ cc -lpThread -Datei.C

Die Funktionen, die in der PThreads -Bibliothek definiert sind, können Folgendes umfassen:

pthread_create:

Es wird verwendet, um einen neuen Thread zu erstellen

Parameter von pthread_create:

Es hat die folgenden Parameter:

Gewinde: Dies wirkt als Zeiger auf einen nicht signierten Ganzzahlwert. Es gibt die Thread -ID des gebildeten Threads zurück.

Attribute: Dieser Parameter fungiert als Zeiger auf eine Struktur. Es wird verwendet, um Attribute eines Threads zu definieren, der die Planungspolitik und die Stapeladresse usw. sein kann.

start_routine: Dieser Parameter ist ein Zeiger auf eine vom Thread implementierte Unterroutine.

Streit: Dieser Parameter ist ein Zeiger, der mit unterschiedlichen Argumenten für die zu Beginn des Arguments vordefinierte Funktion void ist

Syntax:

>> int pthread_create
(pthread_t * thread, const pthread_attributes_t * attr, void * ( * start_routine) (void *), void * argument);

pthread_exit:

Es wird verwendet, um einen Thread zu beenden oder zu beenden

Parameter von pthread_exit:

Die Methode, die am Ende der Methode/des Prozesses verwendet wird. Es speichert den Status des Threads so, dass der Thread endet. Es muss eine globale Variable sein. Dadurch kann der nächste Thread in der Linie dem Thread verbinden, wenn er verfügbar ist.

Syntax:

>> void pthread_exit (void *retval);

pthread_join:

Dies ist eine Funktion, die zum Zeitpunkt des Wartens auf die Beendigung des Threads verwendet wird.

Parameter für pthread_join:

Der hier verwendete Parameter ist:

Thread_id: Es ist die ID des Threads, auf den der Thread in der Linie wartet.

Thread_return: Es ist der Parameter, der als Zeiger auf den jeweiligen Ort fungiert, an dem wir den Exit -Status definiert haben.

Syntax:

>> int pthread_join (pthread_t thread_identification, void ** thread_return);

pthread_self:

Dies ist eine Methode, mit der die ID des aktuell in der Schlange stehenden Thread abgerufen wird.

Syntax:

>> pthread_t pthread_self (void);

pthread_equal:

Diese Methode wird verwendet, um zu vergleichen, wenn zwei Threads gleichwertig sind oder nicht. Wenn zwei Threads gleich sind, gibt die Funktion einen anderen Wert als Null als Antwort zurück.

Syntax:

>> int pthread_equal (pthread_t thread1, pthread_t thread2);

pthread_cancel:

Diese Methode wird verwendet, um eine Anforderung zur Stornierung zu senden

Parameter für pthread_cancel:

Der verwendete Parameter ist obligatorisch, um die Anforderung zu stornieren.

Syntax:

>> int pthread_cancel (pthread_t threadName);

pthread_detach:

Dies ist die Methode, mit der ein Thread getrennt wird. Es braucht keinen Thread, um sich an der Kündigung anzuschließen. Alle im Thread ausgeführten Ressourcen werden veröffentlicht, sobald der Thread abgelöst wird.

Parameter von pthread_detachr:

Es ist der Parameter, der die obligatorische Parameter -Thread -ID akzeptiert. Es ist ein Muss, abzunehmen.

Syntax:

>> int pthread_detach (pthread_t thread);

Beispielcode:

Hier ist ein Beispielcode, um die Implementierung der oben beschriebenen Funktion anzuzeigen. Wir haben einen GCC -Compiler verwendet, um diese Funktionen zu kompilieren.

// Programm zur Anzeige der Thread -Funktionen
#enthalten
#enthalten
#enthalten
// den POSIX-Thread aufrufen, ein Must-Have in Unix/Linux-Systemen
pthread_t TID [2];
void *Funktion (void *arg)

nicht signiert lang i = 0;
pthread_t id = pThread_self ();
if (pthread_equal (id, TID [0]))
// Bedingung für Gewinne gleich sind

printf ("\ n erster Thread wird verarbeitet \ n");

anders

printf ("\ n zweiter Thread wird verarbeitet \ n");

// Threads verarbeitet werden.
für (i = 0; i<(0x255);i++);
null zurückkehren;

int main (void)

int i = 0;
im Terror;
// Erstellen eines neuen Threads
während ich < 2)

ERROR = PTHREAD_CREATE (& (TID [i]), NULL, & Funktion, NULL);
if (Fehler != 0)
printf ("\ n nicht in der Lage sein, den Thread zu erstellen: [%s]", Strerror (Fehler));
anders
printf ("\ n Thread wurde erfolgreich erstellt \ n");
// Thread erfolgreich erstellt
i ++;

Schlaf (5);
Rückkehr 0;

Der Code ist in einem Texteditor geschrieben. Sie können jeden Editor basierend auf Ihrer Wahl verwenden. Speichern Sie es dann in Ihrem Lieblingsort.

Die Datei wird im Computersystem gespeichert und dann zugegriffen. Die von uns gespeicherte Datei wurde Test genannt.C. Geben Sie den folgenden Befehl im Terminalfenster ein, um darauf zuzugreifen:

$ sudo gcc Test.c -lpThread

Geben Sie als nächstes den folgenden Befehl ein, um die Ausgabe auszuführen:

$ ./A.aus

Erwartete Ausgabe:

Die Ausgabe, die wir als Antwort auf den vorherigen Code erhalten haben, wird unten angezeigt:

Abschluss:

Das Tutorial umfasste den Grundprozess der Erstellung von Threads und diskutierte alle häufig verwendeten Methoden in seiner Erstellung. Thread ist eine Instanz eines Prozesses. Wir haben Benutzer dann durch die berühmten Parameter geführt, die für jeden Prozess zusammen mit den Syntaxen verwendet werden, damit sie sie in ihren Computerprogrammen verwenden können. Hier haben wir auch einen Beispielcode als Beispiel geteilt, um die Idee des Erstellens eines C -Programms in POSIX besser zu verstehen. Der von uns verwendete Compiler war GCC im Linux -System. Benutzer können sich auch für jeden anderen Compiler entscheiden, basierend auf ihrer Präferenz.