ホームページ >バックエンド開発 >C++ >POSIXスレッドライブラリ

POSIXスレッドライブラリ

王林
王林転載
2023-08-25 16:29:06898ブラウズ

POSIXスレッドライブラリ

Pthreads は、スレッドの作成と同期のための API を定義する POSIX 標準 (IEEE 1003.1c) を指します。これは実装ではなく、スレッドの動作の仕様を定義します。仕様は、オペレーティング システムの設計者が望む方法で実装できます。その結果、多くのシステムが Pthreads 仕様を実装していますが、そのほとんどは Linux、Mac OS X、Solaris などの UNIX タイプのシステムです。 Windows は Pthread をネイティブにサポートしていませんが、一部のサードパーティ Windows 実装は利用可能です。図 4.9 に示す C プログラムは、個別のスレッドで非負の整数の合計を計算するマルチスレッド プログラムを構築するための基本的な Pthreads API を示しています。 Pthreads プログラムでは、別のスレッドが指定された関数で実行を開始します。以下のプログラムでは、これはrunner()関数です。このプログラムが開始されると、main() で別の制御スレッドが開始されます。次に、main() は 2 番目のスレッドを作成し、初期化の後、runner() 関数で制御を開始します。 2 つのスレッドはグローバル データの合計を共有します。

#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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。