第19講 .NETによるマルチスレッドプログラミング
第3話 gcnew Threadによる簡単なマルチスレッド
では、
Thread^ 変数名=gcnew Thread(gcnew ThreadStart(関数名));
の使い方を学ぶために簡単なマルチスレッドプログラミングを作ってみましょう。
1+2+3+・・・+10000
を4スレッドで計算させるには、和を4つの部分
1+2+3+・・・+2500
2501+2502+・・・+5000
5001+5002+・・+7500
7501+7502+・・・+10000
に分解させればよいのです。
4つのスレッドを立ち上げるには、例えば
Thread^ a=gcnew Thread(gcnew ThreadStart(f));
Thread^ b=gcnew Thread(gcnew ThreadStart(g));
Thread^ c=gcnew Thread(gcnew ThreadStart(h));
Thread^ d=gcnew Thread(gcnew ThreadStart(i));
a->Start();
b->Start();
c->Start();
d->Start();
とすればよいのです。
こうするとa->Start();によってスレッドが起動しそのスレッドの基に関数fが展開します。
他も同様です。
そして、次の記述を忘れてはいけません。
a->Join();
b->Join();
c->Join();
d->Join();
これを入れないと、スレッドが終了前にルートスレッドが進んでしまいます。
a->Join();
はaで起動したスレッドが終了するまで待機せよです。
ですから、4つでは4つのスレッドが終了するまで待機せよという命令になります。
グローバル変数を4つ用意して
それぞれを0に初期化しておいて、それぞれのスレッドでこの変数に加えていけば4つに分解した和が求まります。
そして、最後に4の変数の和をルートにおいて示せば1+2+3+・・・+10000が求まります。
では皆さん考えてみてください。
1つ重要な注意を忘れていました。
冒頭に
using namespace System::Threading;
を入れないとエラーします。
第2話へ 第4話へ
C言語 C++講義第1部へ
VB講義へ
VB講義基礎へ
vc++講義へ第1部へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)