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

Einfache Methode zur Installation von MySQL unter Linux

Bei der Onlinesuche nach Methoden zur Installatio...

Beispiel für eine Nginx-Cache-Konfiguration

Beim Entwickeln und Debuggen einer Webanwendung s...

Zusammenfassung der Vue3-Slot-Nutzung

Inhaltsverzeichnis 1. Einführung in den V-Slot 2....

Elegantere Verarbeitung von Datumsangaben in JavaScript basierend auf Day.js

Inhaltsverzeichnis Warum day.js verwenden? Moment...

Methode und Optimierungsprinzip für langsame MySQL-Abfragen

1. Zum Vergleich der Datumsgröße muss das an XML ...

Analyse des Prinzips der MySQL-Indexlängenbeschränkung

Dieser Artikel stellt hauptsächlich die Analyse d...

MySQL-8.0.26 Konfigurationsgrafik-Tutorial

Vorwort: Vor kurzem hat das Unternehmensprojekt d...

CentOS 7.6 Installation der MySQL 5.7 GA-Version Tutorial-Diagramm

Inhaltsverzeichnis Umgebungsvorbereitung Umgebung...

Vue implementiert die Bildfrequenzwiedergabe des Karussells

In diesem Artikelbeispiel wird der spezifische Co...

JavaScript implementiert die Verarbeitung großer Datei-Uploads

Beim Hochladen von Dateien, z. B. Videodateien, d...

Verwenden des CSS-Loaders zum Implementieren des CSS-Moduls in Vue-CLI

【Vorwort】 Sowohl die modularen CSS-Lösungen von V...

Tutorial zur SQL-Optimierung: IN- und RANGE-Abfragen

Vorwort In „High Performance MySQL“ wird erwähnt,...

HTML-Lernhinweise – Detaillierte Erklärung der HTML-Syntax (unbedingt lesen)

1. Was ist die HTML-Auszeichnungssprache? HTML is...