PthreadIntro
17/30 int x=2; void b(){ x=x+4; } void a(){ x=x+1; } int main(){ create(a()); create(b()); : join(a()); join(b()); printf(“%d\n”,x) }
【テロップ】
※各テロップ文字をクリックすると該当の場所がピンポイントで閲覧できます。
【ノート】
ここのプログラム例を見てください。このプログラムは2個のスレッドが生成されますが、 そのスレッドでは同じ変数、すなわち、xが読み書きされています。 関数エーを呼び出すスレッドと、関数bを呼び出すスレッドが、生成されます。 すなわち、左のプログラムは、このような構成になります。 まず、main関数が起動し、 関数エーを実行するスレッドと、関数bを実行するスレッドを、クリエイト関数を用いて生成します。 ここでmain関数のスレッドを含め、3個のスレッドが同時並行的に実行されます。関数エーと関数bのスレッドの様子を、 具体的に下に示します。 それぞれスレッドは、変数の読み出し、次に、1もしくは4の加算、そして最後に、変数への書き込みが行われます。 その後、生成されたスレッドの終了を、main関数で待ち、変数xのあたいが表示されます。 なお、変数xは最初は2なので、4の加算と、1の加算で、7のあたいになることが期待されていることに注意しましょう。