ワーカースレッドを使用した時のCPU稼働率に関して

[戻る]
arisu 2006/06/15(木) 01:14:30
こんばんは、いつもお世話になっております。

初歩的質問で申し訳ございませんが、
ご教授の程お願いいたします。

環境はVC++6.0 SDI WinXP_SP2です

Q1.ワーカースレッドの中でWhile文を使用していますが、
常にCPUがFULL状態です。なって当然なのでしょうか?
ちなみに処理をしなくて、while文だけでもFULL状態です。

UINT TestThread(IPVOID pParam)
{
    while(g_StopFlag)
    {
    処理
    }
    return 0;
}

Q2.構造体の外部変数の宣言はどのようなコードを書いたらいいのでしょうか?
extern 構造体名 変数名;ではいけないのでしょうか。
上記だと変数名の前に「;」が必要です。というエラーがでてしまいます。

以上、アドバイスお願いいたします。

超初心者 2006/06/15(木) 01:36:10
Q1

なって当然です。
CPUは常に動いています。動いていれば100%です。
Sleepや同期イベント待ちなどでそのスレッドを実行していないなら下がるでしょう。

スレッドを実行しているか、どのスレッドも実行していない(実際はそれ専用の処理を
実行しているけど)の平均値を取って30%とかを算出しているんだよ。

Q2

もう少しプログラムとエラーを教えてくれないと正確なこといえないけど。
ということで推測

その構造体を定義していないんじゃないの?
構造体を定義しているヘッダファイルを#includeしてないんでしょ。

Ban 2006/06/15(木) 03:50:50
Q2
C++ですか?
実はCで、structも書かないといけないとか。
まぁいずれにせよ情報が少なすぎて憶測の域をでませんが。

ITO 2006/06/15(木) 12:32:28
Q1 処理時間が遅くても構わないのなら、処理の初めか終わりに
  「Sleep(1);」を入れてみましょう。
  それだけでも大分変わるはずです。

Q2  その前に、「変数名が見当たりません。」等のエラーがでませんか?

古いスレッドには追加発言できません。