プロが教える店舗&オフィスのセキュリティ対策術

 マルチスレッドで以下のような内容のプログラムを組みたいのですが、当方マルチスレッド超初心者で、ミューテックス、セマフォの基本的な使用方法は習得したつもりですが、この問題を解決する方法が見当もつきません。解決方法をご存知の方がいらっしゃいましたら、ご教授お願いします。
 スレッドは全部で6本あります。そのうち、1本は初期状態では、停止しています。他のスレッド5本は、初期状態で動作を始めています。この5本のスレッドはそれぞれ決められたポイントで、何らかの方法で、一時停止をさせます。この5本のスレッドすべてがそれぞれのポイントで停止した時点で、初期状態で停止していた1本のスレッドが動き出し、今度は、このスレッドを決められたポイントに来た時点で、停止させます。停止が確認できたら、止めていた5本のスレッドを一挙に稼動させます。あとはこれの繰り返しです。
 環境はWinXp, VC2005 です。

A 回答 (1件)

イベントオブジェクトを使えば解決できると思います。



参考↓
http://nienie.com/~masapico/api_CreateEvent.html
http://www.kumei.ne.jp/c_lang/sdk/sdk_89.htm

この仕様で作る場合には、PulseEventとSetEventをうまく組み合わせる必要がありますね。
http://nienie.com/~masapico/api_PulseEvent.html
http://nienie.com/~masapico/api_SetEvent.html
    • good
    • 0
この回答へのお礼

返答遅れました。すいません。
仕様道理動作するものができました。
SetEventを五本それぞれのスレッドの最後に配置し、その直後に一本のスレッドのほうがSetEventできるEventObjectを置くことで、解決しました。結局EventObjectは6つ使用したことになります。
ただ、一本の方のスレッドの処理が一瞬なので、SetEventを処理したと直後にResetEventを処理しても間に合わず、デッドロックしてしまいます(今のところSleepさせて回避させています。)が、これは今後の課題としてとっておきます。
返答ありがとうございました。

お礼日時:2007/12/03 16:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!