首頁 >後端開發 >C++ >POSIX線程庫

POSIX線程庫

王林
王林轉載
2023-08-25 16:29:06910瀏覽

POSIX線程庫

Pthreads指的是POSIX標準(IEEE 1003.1c),定義了用於執行緒建立和同步的API。這定義了線程行為的規範,而不是實作。規範可以由作業系統設計者以任何他們希望的方式來實現。因此,許多系統實作了Pthreads規格;大多數是UNIX類型的系統,包括Linux、Mac OS X和Solaris。雖然Windows不原生支援Pthreads,但有些第三方的Windows實作是可用的。圖4.9所示的C程式示範了用於建立一個多執行緒程式的基本Pthreads API,該程式在單獨的執行緒中計算非負整數的總和。在Pthreads程式中,單獨的執行緒在指定的函數中開始執行。在下面的程式中,這是runner()函數。當這個程式開始時,一個單獨的控制執行緒在main()中開始。然後,main()創建了一個第二個線程,該線程在runner()函數中開始控制,並經過一些初始化。這兩個線程共享全域資料sum。

範例

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

使用Pthreads API的多執行緒C程式。

以上是POSIX線程庫的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除

相關文章

看更多