[過去ログ] マルチスレッドプログラミング相談室 (986レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
529(3): 02/09/26 16:20 AAS
>>527
それだけでもないみたいです。というのも、別にサムネイルを作るところを
別スレッドにしているわけではなくて、ただサムネイルを表示する
GUIの部分の、独自メッセージのやりとりをしている部分がマルチスレッドでした。
例えば、何もないダイアログを作り、そこにボタン、スクロールバー、
エディットボックス、などなどを追加していきます(プログラムで)。
で、一斉にそれらがマルチスレッドで処理を始めるという具合です。
それぞれ普通にプロシージャを使ってWindows任せで処理すればいいと思うんですが…。
>>523
多分、他のスレッドと同期を取って計算しているんだと思うけれど、その同期の取り方が
適当なグローバル変数などを使ってやってるのではないでしょうか??
例えばスレッドAでflag=1にすると、スレッドBの処理がはじまる、というような場合、
スレッドBでは、while(flag!=1); みたいに待機しているんだと思います。
その時に、一度flag!=1を確認すれば、すぐに別スレッドに処理を移すべきなのだけれど、
もちろんOSではそんなことはわからず、ある一定の決められた期間スレッドBでは
ひたすらflag!=1を評価し続けます。この時間はまるまる無駄です。
そういうタイミングでSleep(0)を入れてやると、すぐに別スレッドに処理が移るので、
効率的にCPUを使うことが出来る、という現象だと思います。
(この場合、Sleepは1でなくて0で問題ないはずです)
どうでしょうか?
531(1): 02/09/26 21:41 AAS
>>529
> そういうタイミングでSleep(0)を入れてやると、すぐに別スレッドに処理が移るので、
> 効率的にCPUを使うことが出来る、という現象だと思います。
> (この場合、Sleepは1でなくて0で問題ないはずです)
「マルチスレッド 同期」あたりで、一回グクッてみることをお勧めする。
545(3): 02/09/27 00:47 AAS
>>529
> それぞれ普通にプロシージャを使ってWindows任せで処理すればいいと思うんですが…。
何故いいと思うのか根拠書かないと。
GUIスレッドを自前で持つなんて、
Look&Feelのレスポンスが重要な局面ではよくやることだよ。
何も不思議なことはやってない。(少なくとも提示されている条件内では)
それよりも君の>>521の姿勢がずっと疑問。
AFCのスレッドモデルについてちゃんと理解してるの?
550(1): 02/09/27 01:09 AAS
>>529
>スレッドBでは、while(flag!=1); みたいに待機しているんだと思います。
こんな事考えてる様なやつだしね(w
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.035s