• ベストアンサー

マルチスレッドについて

VC++を使用しています。 マルチスレッドの引数の使用法について教えてください。 int A; int B; AfxBeginThread((AFX_THREADPROC) ::WaitThread, (LPVOID)this); UINT WaitThread( LPVOID pParam ) { if(A == 0) {     … } if(A == 1) {     … } if(B == 0) {     … } if(B == 1) {     … } } のようなプログラムを作ろうとしています。 引数の受け渡し方法教えてください。 お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

pParam 使わなくてもグローバルでもOKよん。 pParam を使うのは、スレッドごとに別のオブジェクトを渡したい場合で、全てのスレッドで共有する変数とかは別にグローバルでも問題ないっすよ。 問題は、変数A,Bの意味。意味によって使い分けるのが賢いよ。 余計なお世話だけど。たぶん、サンプルソースの延長線上にあるコードはバグを含むと思うよ。クリティカルセクションとかミューテックスとか調べた方がいいよ。

SES
質問者

お礼

グローバルでも試してみました。 作っているプログラムとしては、 こちらの方が使い勝手がよかったです。 ありがとうございました。

その他の回答 (2)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

#1の回答の通り、pParamで引数を渡すことになると思います。 ただ、pParamで単なる数値を渡すだけならよいのですが、ポインタの場合には、それが指す実体の寿命には十分気をつける必要があります。

noname#30727
noname#30727
回答No.1

pParam で渡すのが一般的だと思います。 struct MyParam { MyClass *inst; int a; int b; }; MyParam param; param.inst = this; param.a = 1; param.b = 2; AfxBeginThread((AFX_THREADPROC) ::WaitThread, (LPVOID)&param);

SES
質問者

お礼

返事遅くなってすいません。 参考にしてみます。 ありがとうございました。

関連するQ&A