同一処理を複数のスレッドで実行するには?


スレっど初心者  2005-02-22 14:11:37  No: 56524

マルチスレッドの管理について質問です。

値をリストボックスに表示する処理をマルチスレッドで
100回実行したいのですが、スレッドを作り過ぎないように
スレッド数の最大を20個と規制したいです。
その為に現在のスレッド数を把握したいのですが
どのような処理をおこなえばいいのでしょうか?


KING・王  2005-02-22 17:12:30  No: 56525

色々と方法はあると思うのですが。。。
(MFCかSDKなど、スレッドの作り方にも依存するよう気が。。。)

取りあえず、メインの部分などで、スレッドの作成時にカウントをインクリメントし、
スレッド終了時のカウントをデクリメントすることで作成されているスレッド数は、
簡単に管理できると思います。
で、スレッド作成前にこのカウントの値が20以下か確認し、20を超えているようなら、
スレッドの作成を行わなければよいのでは?

多少排他制御は必要ですが、単純なカウントのインクリメント、デクリメントなら、
InterlockedIncrement()などのAPIが利用できますし。。。


スレっど初心者  2005-02-23 05:45:56  No: 56526

KING・王  様  レスありがとうございます。

すいません  環境書いてませんでした。
VC6.0  SDKです。OSはWIN98です。


スレッド数を監視し20以下ならスレッド作成するスレッドを
作ってみました。
のちほど報告いたします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加