Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pustaka benang POSIX

Pustaka benang POSIX

王林
王林ke hadapan
2023-08-25 16:29:06881semak imbas

Pustaka benang POSIX

Pthreads merujuk kepada standard POSIX (IEEE 1003.1c), yang mentakrifkan API untuk penciptaan dan penyegerakan benang. Ini mentakrifkan spesifikasi tingkah laku benang, bukan pelaksanaannya. Spesifikasi boleh dilaksanakan oleh pereka bentuk sistem pengendalian dalam apa jua cara yang mereka kehendaki. Akibatnya, banyak sistem melaksanakan spesifikasi Pthreads kebanyakannya adalah sistem jenis UNIX, termasuk Linux, Mac OS X dan Solaris. Walaupun Windows tidak menyokong Pthreads secara asli, beberapa pelaksanaan Windows pihak ketiga tersedia. Program C yang ditunjukkan dalam Rajah 4.9 menunjukkan API Pthreads asas untuk membina atur cara berbilang benang yang mengira jumlah integer bukan negatif dalam benang berasingan. Dalam program Pthreads, utas berasingan mula melaksanakan dalam fungsi tertentu. Dalam program di bawah, ini ialah fungsi runner(). Apabila program ini dimulakan, urutan kawalan berasingan bermula dalam main(). Kemudian, main() mencipta benang kedua, yang mula mengawal dalam fungsi runner(), selepas beberapa permulaan. Kedua-dua utas berkongsi jumlah data global.

Contoh

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

Program C berbilang benang menggunakan API Pthreads.

Atas ialah kandungan terperinci Pustaka benang POSIX. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam

Artikel berkaitan

Lihat lagi