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