タイマー関数とマルチスレッドについて
こんばんわ。
マルチスレッドプログラミングを行なっています。
コンパイラはVC++.NETでC言語を利用しwin32 apiを用いています。
スレッドを_beginthreadex関数でスレッドを2つ生成し、WaitForSingleObject,SetEvent,ResetEvent関数によるイベント同期を利用し、2スレッドの同期をはかっています。
[質問内容]
以下のように、スレッド2でWaitForSingleObject関数にてスレッド2を待機状態にし、スレッド1のSetEvent関数にて待機しているスレッド2を再開させる方法をとっています。
例えば、タイマーをスタート後に待機状態になり、スレッド2が再開後タイマーストップするとした場合、スレッド2が待機状態のときもタイマーを動き続けているのでしょうか?
・スレッド1
SetEvent(hEvent[0]);
・スレッド2
SUSPEND_INTERVAL=20
if(Num%THREAD_SUSPEND_INTERVAL==0){
timestart=timeGetTime();←タイマースタート
WaitForSingleObject(hEvent[0],INFINITE);
ResetEvent(hEvent[0]);
timestop=timeGetTime();←タイマーストップ
}
よろしくお願いします。
お礼
ご返事ありがとうございます。 どうやらWindowsOS単体では実装は難しそうですね。。。 ある程度のオーバーは許容範囲なので現状のままで行きたいと思います。 それでも厳しくなりましたら教えていただいたURLを参考に、機材、環境レベルでアプローチしてみたいと思います。 ありがとうございました。