Spezifische Verwendung von pthread_create in Linux zum Erstellen von Threads

Spezifische Verwendung von pthread_create in Linux zum Erstellen von Threads

pthread_create-Funktion

Funktionseinführung

pthread_create ist eine Thread-Erstellungsfunktion in der UNIX-Umgebung.

Header-Dateien

#include<pthread.h>

Funktionsdeklaration

int pthread_create(pthread_t *tidp einschränken,const pthread_attr_t *attr_einschränken,void*(*start_rtn)(void*),void *Argument einschränken);

Rückgabewert

Bei Erfolg wird 0 zurückgegeben, andernfalls eine Fehlernummer.

Parameter

Der erste Parameter ist ein Zeiger auf die Thread-Kennung.

Der zweite Parameter wird zum Festlegen von Thread-Attributen verwendet.

Der dritte Parameter ist die Adresse der Funktion, die der Thread ausführt.

Das letzte Argument sind die Parameter, mit denen die Funktion ausgeführt werden soll.

Beachten

Denken Sie beim Kompilieren daran, den Parameter -lpthread hinzuzufügen, um die statische Linkbibliothek aufzurufen. Weil pthread nicht die Standardbibliothek des Linux-Systems ist.

pthread_join-Funktion

Funktionseinführung

Die Funktion pthread_join wird verwendet, um auf das Ende eines Threads zu warten.

Der Funktionsprototyp ist:

extern int pthread_join __P (pthread_t __th, void **__thread_return);

Parameter:

Der erste Parameter ist die Thread-Kennung, auf die gewartet wird.

Der zweite Parameter ist ein benutzerdefinierter Zeiger, der zum Speichern des Rückgabewerts des gewarteten Threads verwendet werden kann.

Beachten

Diese Funktion ist eine Thread-Blockierungsfunktion. Die Funktion, die sie aufruft, wartet, bis der wartende Thread beendet ist. Wenn die Funktion zurückkehrt, werden die Ressourcen des wartenden Threads zurückgefordert. Bei erfolgreicher Ausführung wird 0 zurückgegeben, bei fehlgeschlagener Ausführung eine Fehlernummer.

Beispiel:

#include <stdio.h>
#include<stdlib.h>
#include<pthread.h>

/*Deklarieren Sie die Struktur*/
Strukturmitglied
{
  int-num;
  Zeichen *Name;
};

/* Thread pthread definieren */
statisches void * pthread(void *arg)
{
  Strukturmitglied *temp;

  /* Thread pthread wird gestartet*/
  printf("pthread starten!\n");

  /* Den Hauptthread weiter ausführen lassen */
  schlaf(2);

  /* Drucke die übergebenen Parameter aus */
  temp = (Strukturmitglied *)arg;
  printf("Mitglied->num:%d\n",temp->num);
  printf("Mitglied->Name:%s\n",temp->Name);

  gibt NULL zurück;
}

/* Hauptfunktion */
int main(int agrc,char*argv[])
{
  pthread_t tidp;
  Strukturmitglied *b;

  /* Weisen Sie der Strukturvariablen b einen Wert zu*/
  b = (Strukturmitglied *)malloc(sizeof(Strukturmitglied));
  b->num=1;
  b->name="mlq";

  /* Einen Thread erstellen (pthread) */
  wenn ((pthread_create(&tidp, NULL, pthread, (void*)b)) == -1)
  {
    printf("Fehler erstellen!\n");
    Rückgabe 1;
  }

  /* Zuerst den Thread pthread laufen lassen*/
  Schlaf (1);

  /* Thread pthread schläft für 2 s, dann kann main zuerst ausgeführt werden*/
  printf("mian weiter!\n");

  /* Warte auf die Freigabe des Threads pthread*/
  wenn (pthread_join(tidp, NULL))
  {
    printf("Thread wird nicht beendet...\n");
    Rückgabe -2;
  }

  gebe 0 zurück;
}

Kompilierungs- und Ausführungsergebnisse

Die Kompilierungs- und Ausführungsergebnisse sind in der folgenden Abbildung dargestellt. Sie können sehen, dass der Hauptthread main und der Thread pthread abwechselnd ausgeführt werden. Das heißt, nachdem wir den Thread pthread erstellt hatten, wurden beide Threads ausgeführt, was beweist, dass die Erstellung erfolgreich war. Darüber hinaus können Sie sehen, dass beim Erstellen des Threads pthread die übergebenen Parameter korrekt gedruckt werden.


Dies ist das Ende dieses Artikels über die spezifische Verwendung von pthread_create in Linux zum Erstellen von Threads. Weitere relevante Linux-Inhalte zu pthread_create 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:
  • Studie und Zusammenfassung basierend auf pthread_create, readlink, getpid und anderen Funktionen
  • Lösung für undefinierten Verweis auf „pthread_create“
  • Erläuterung der Funktion pthread_create() in der C-Sprache

<<:  js realisiert die Funktion zum Klicken zum Wechseln der Karte

>>:  Das Front-End muss wissen, wie Bilder verzögert geladen werden (drei Methoden)

Artikel empfehlen

Detaillierter Installationsprozess von Jenkins unter Linux

Inhaltsverzeichnis 1. Installieren Sie JDK 2. Jen...

MySQL-String-Aufteilungsvorgang (String-Abfangen mit Trennzeichen)

String-Extraktion ohne Trennzeichen Fragenanforde...

So deaktivieren Sie die Klartextanzeige und die Schnelllöschfunktion von IE10

IE10 bietet eine Schaltfläche zum schnellen Lösche...

Docker-Compose-Schritte zum Konfigurieren der Spring-Umgebung

Vor Kurzem musste ich das Projekt für die Mitglie...

JavaScript-Implementierung des Verifizierungscode-Falls

In diesem Artikel wird der spezifische Code für J...

Shell-Skript Nginx-Automatisierungsskript

Dieses Skript kann die Vorgänge zum Starten, Stop...

WeChat-Applet: benutzerdefinierter TabBar-Schrittdatensatz

Inhaltsverzeichnis 1. Einleitung 2. Passen Sie de...

33 der besten kostenlosen englischen Schriftarten geteilt

ChunkFive Freie Schriftfamilie Cuprum JAH I Kosten...

So beheben Sie den abnormalen Fehler ERROR: 2002 in MySQL

Kürzlich ist beim Starten von MySQL ein Fehler au...