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

Implementierung der CSS-Transformation des Seitenumblätter-Animationsdatensatzes

Szenario mit dem Problem des Seitenumblätterns B ...

js, um einen 3D-Karusselleffekt zu erzielen

In diesem Artikel wird der spezifische Code zur I...

Beispiel für einen WeChat-Applet-Rechner

Beispiel für einen WeChat-Applet-Rechner. Zu Ihre...

Zusammenfassung der mobilen Anpassungslösung von webpack

Inhaltsverzeichnis rem vw An UI-Frameworks von Dr...

Eine kurze Zusammenfassung aller Kapselungsmethoden in Vue

Inhaltsverzeichnis 1. Kapselungs-API 2. Globale T...

So optimieren Sie die langsame Like-Fuzzy-Abfrage in MySQL

Inhaltsverzeichnis 1. Einleitung: 2. Die erste Id...

Detaillierte Erklärung der Mixin-Verwendung in Vue

Inhaltsverzeichnis Vorwort 1. Was sind Mixins? 2....

WeChat-Applet-Entwicklung Formularvalidierung WxValidate-Nutzung

Ich persönlich bin der Meinung, dass das Entwickl...

Zusammenfassung der MySQL-Tabellen- und Spaltenkommentare

Genau wie bei Code können Sie den Tabellen und Sp...

Beispielanalyse der Verwendung von Dockerfile-Textdateien

Dockerfile ist eine Textdatei, die zum Erstellen ...