|
VisualC++はあまり使用しませんが・・・。
例えばこんな感じ(いい加減ですみません)の場合。
Func()
{
for(){
/*ループ処理*/
}
}
OnTimer()
{
/*タイムアウト処理*/
}
同一のスレッドでこれらの関数が呼ばれる場合には、Func内を
実行している時にタイムアウトが発生しても、Funcを抜けて
からでないと、OnTimerが実行されることはないのです。
したがって、あまりにもループ処理にかかる時間が長い場合には、
タイムアウトが発生してからOnTimer関数が呼ばれるまでに時間が
かかってしまう場合があります。
タイマを100msに設定した時に、ループ処理が1秒かかっていた
のでは場合によっては1秒間はOnTimerが呼ばれないことがあり
そうですね。逆にタイマを1秒に設定しループ処理が100msだった
場合には、最悪1.1秒で済みそうですね。単純計算でですが。
ループ処理を別のスレッドで実行させる事で、タイムアウト発生後
すぐにOnTimer関数を呼ぶようにすることができます。
この際、"スレッド"と言う技を身につけちゃいましょう。
|