Heim  >  Artikel  >  Backend-Entwicklung  >  POSIX-Thread-Bibliothek

POSIX-Thread-Bibliothek

王林
王林nach vorne
2023-08-25 16:29:06844Durchsuche

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);
}

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen