PthreadIntro
27/30 プログラム例2(POSIX threadを用いたC言語 (2スレッド) )

【テロップ】
※各テロップ文字をクリックすると該当の場所がピンポイントで閲覧できます。



【ノート】
さて、これがポジックススレッドを用いたプログラムになります。 さきほどのマルチスレッドのプログラムと同様に、pスレッドドットhをインクルードします。 さらに、引き数のための構造体を定義しています。定義の内容は同じで、main関数の中で引き数となる構造体の配列を宣言しています。 それを用いて、pスレッドクリエイト関数と、pスレッドジョイン関数を呼び出しています。 スレッド呼び出される関数の冒頭も、先ほどのプログラムと同様で、引き数を関数内の局所変数にコピーします。 異なる部分は、まずここです。エルサムという変数を関数内で宣言し、その変数に配列データを加算していきます。 エルサムは関数ごと、すなわち、スレッドごとに宣言された変数なので、スレッドごとに異なるメモリアドレスを持ちます。 その後、エルサムのあたいを、変数サムに加算し、全体の総和を計算します。このとき、排他制御が必要となるので、ミューテックス変数を宣言し、初期化しておき、その変数を用いて、加算の前後に、ロック関数とアンロック関数を配置します。 長いプログラムとなりますが、分解して考えると、理解は難しくないと思います。関数名や定数名などで、つづりの複雑なものが多いので、よく見ておきましょう。