Pustaka benang POSIX

王林
Lepaskan: 2023-08-25 16:29:06
ke hadapan
890 orang telah melayarinya

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);
}
Salin selepas log masuk

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!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan