Heim > Backend-Entwicklung > C++ > POSIX-Thread-Bibliothek

POSIX-Thread-Bibliothek

王林
Freigeben: 2023-08-25 16:29:06
nach vorne
897 Leute haben es durchsucht

POSIX-Thread-Bibliothek

Pthreads bezieht sich auf den POSIX-Standard (IEEE 1003.1c), der APIs für die Thread-Erstellung und -Synchronisierung definiert. Dies definiert die Spezifikation des Thread-Verhaltens, nicht die Implementierung. Spezifikationen können von Betriebssystementwicklern beliebig umgesetzt werden. Daher implementieren viele Systeme die Pthreads-Spezifikation; die meisten davon sind UNIX-Systeme, darunter Linux, Mac OS X und Solaris. Obwohl Windows Pthreads nicht nativ unterstützt, sind einige Windows-Implementierungen von Drittanbietern verfügbar. Das in Abbildung 4.9 gezeigte C-Programm demonstriert die grundlegende Pthreads-API zum Erstellen eines Multithread-Programms, das die Summe nichtnegativer Ganzzahlen in separaten Threads berechnet. In einem Pthreads-Programm beginnt ein separater Thread mit der Ausführung einer bestimmten Funktion. Im folgenden Programm ist dies die Funktion runner(). Wenn dieses Programm startet, startet ein separater Steuerungsthread in main(). Anschließend erstellt main() einen zweiten Thread, der nach einer gewissen Initialisierung mit der Steuerung in der Funktion runner() beginnt. Die beiden Threads teilen sich die globale Datensumme.

Beispiel

#include<pthread.h>
#include<stdio.h>
int sum;
/* this sum data is shared by the thread(s) */
/* threads call this function */
void *runner(void *param);
int main(int argc, char *argv[]){
   pthread t tid; /* the thread identifier */
   /* set of thread attributes */
   pthread attr t attr;
   if (argc != 2){
      fprintf(stderr,"usage: a.out </p><p>");
      return -1;
   }
   if (atoi(argv[1]) < 0){
      fprintf(stderr,"%d must be >= 0</p><p>",atoi(argv[1]));
      return -1;
   }
   /* get the default attributes */
   pthread attr init(&attr); /* create the thread */
   pthread create(&tid,&attr,runner,argv[1]);
   /* wait for the thread to exit */
   pthread join(tid,NULL);
   printf("sum = %d</p><p>",sum);
}
/* The thread will now begin control in this function */
void *runner(void *param){
   int i, upper = atoi(param);
   sum = 0;
   for (i = 1; i <= upper; i++)
      sum += i;
   pthread exit(0);
}
Nach dem Login kopieren

Multithread-C-Programm mit Pthreads-API.

Das obige ist der detaillierte Inhalt vonPOSIX-Thread-Bibliothek. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage